我正在尝试调用类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)阅读器).OpenDevice();
((AlienReader)阅读器).TagCollection;
我希望这行能够毫无问题地执行。因为Reader总是属于我指定的类型。 如何让编译器理解同样的事情。
答案 0 :(得分:3)
一个技巧是在中间使用object
强制它:
if (Reader is RFIDeas_Wrapper)
{
((RFIDeas_Wrapper)(object)Reader).OpenDevice();
...
}
或使用as
:
RFIDeas_Wrapper wrapper = Reader as RFIDeas_Wrapper;
if (wrapper != null)
{
wrapper.OpenDevice();
...
}