【问题标题】:Is it possible to get the actual object type if it is assigned to an interface type?如果将其分配给接口类型,是否可以获得实际的对象类型?
【发布时间】:2010-12-20 01:01:13
【问题描述】:

我有一个接口ITransaction,Class1、Class2都实现了这个接口。在运行时,我将 Class1 或 Class2 的对象分配给 ITransaction 的引用。

ITransaction itransaction = new Class1();

ITransaction itransaction = new Class2();

是否可以知道分配给 itransaction 引用的实际类型,可能使用反射或其他方法?

【问题讨论】:

  • 你试过typeof.GetType吗?

标签: c# interface


【解决方案1】:

可以在接口实例上调用GetType()获取有效类型。

(请注意,这可能不会返回您对MarshalByRefObject 实例的 COM 和远程接口的期望,但这是一个不同的主题。)

【讨论】:

  • 谢谢。 :) 我知道那种方法。我以为我只能将它们用于具体课程。那么,是 MarshalByRefObject 吗?
  • 如果你有一个远程接口实例,你实际上有一个代理对象实现了接口,因此使用GetType() 将不会返回服务器上的“原始”对象类型。
【解决方案2】:

你可以写

if (itransaction is Class2)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-11
    • 2012-03-24
    • 2016-11-20
    • 1970-01-01
    • 2017-04-30
    • 1970-01-01
    相关资源
    最近更新 更多