假设我们有两个实现公共(public)接口(interface)的类。
public interface IContract
{
int Type { get; }
}
public class XClass : IContract
{
public int Type { get; set; }
public int X { get; set; }
}
public class YClass : IContract
{
public int Type { get; set; }
public int Y { get; set; }
}
现在,如您所知,当我们将一个类分配给实现的接口(interface)时,接口(interface)实例包含装箱在其中的分配类的所有数据。
IContract ic = new XClass();
应该有一种方法来检测接口(interface)变量 ic 中值的数据类型。
If(ic 包含 XClass 数据类型) 那么... If(ic contains YClass datatype) then ...
如果有人可以帮助我检测分配给接口(interface)实例的数据类型,我会很高兴。谢谢。
最佳答案
你尝试过吗:
if (ic is XClass)
您可以使用“is”关键字来确定类。然后总是有 .GetType(),但那不是那么干净。
if (ic.GetType() == typeof(XClass))
此外,值得一提的是 as
关键字。如果您想从当前对象声明一个新对象,并保证它是一个特定的类:
var d = ic as XClass
如果ic
不是XCLass,它会将d
设置为null
。
关于c# - 从接口(interface)实例中提取数据类型信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17174517/