c# - 从接口(interface)实例中提取数据类型信息

标签 c#

假设我们有两个实现公共(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/

相关文章:

c# - 连接属性未初始化。我试图在两个表中插入数据

c# - 以编程方式为 resx 文件生成 Designer.cs (ResXResourceWriter/ResXResourceReader)

c# - 是否可以在不复制的情况下为多个组件创建一个 Blazor 范围的 CSS 文件?

c# - 字符串列表不会完全写入文本文件

c# - 我的 CSS 文档出现在 Head 中,但没有将任何样式绑定(bind)到元素

c# - nancyfx - 从父文件夹提供静态文件

c# - 通过 build.cake 而不是 Azure Devops 发布构建工件

c# - 声明一个带有两个泛型参数的方法

c# - Clr dll .net 控件

c# - 为什么 .NET 将 UTC 日期更改为服务器时区?