gpt4 book ai didi

c# - 使用 GetType() 检查其类型后,将泛型类型转换为引用类型。如何?

转载 作者:行者123 更新时间:2023-11-30 16:33:33 25 4
gpt4 key购买 nike

我正在尝试调用类 RFIDeas_Wrapper(正在使用的 dll)中定义的函数。但是当我检查阅读器的类型,然后我用它来调用函数时,它显示错误 Cannot convert type T to RFIDeas_Wrapper.

编辑

private List<string> GetTagCollection<T>(T Reader)
{
TagCollection = new List<string>();
if (Reader.GetType() == typeof(RFIDeas_Wrapper))
{

((RFIDeas_Wrapper)Reader).OpenDevice();
// here Reader is of type RFIDeas_Wrapper
//, but i m not able to convert Reader into its datatype.

string Tag_Id = ((RFIDeas_Wrapper)Reader).TagID();
//Adds Valid Tag Ids into the collection
if(Tag_Id!="0")
TagCollection.Add(Tag_Id);
}
else if (Reader.GetType() == typeof(AlienReader))
TagCollection = ((AlienReader)Reader).TagCollection;

return TagCollection;
}

((RFIDeas_Wrapper)Reader).OpenDevice();

((AlienReader)Reader).TagCollection;

我希望这一行能够毫无问题地执行。因为 Reader 将始终是我指定的类型。如何让编译器理解同样的事情。

最佳答案

一个技巧是在中间使用object来强制它:

if (Reader is RFIDeas_Wrapper)
{
((RFIDeas_Wrapper)(object)Reader).OpenDevice();
...
}

或使用as:

RFIDeas_Wrapper wrapper = Reader as RFIDeas_Wrapper;
if (wrapper != null)
{
wrapper.OpenDevice();
...
}

关于c# - 使用 GetType() 检查其类型后,将泛型类型转换为引用类型。如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3052034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com