【发布时间】:2012-09-24 16:28:15
【问题描述】:
假设我有三个类A、B 和C,如下所示,A 和B 具有属性Pro1 和Pro2,类型为C:
class A
{
public C Pro1 {get; set; }
}
class B
{
public C Pro2 { get; set; }
}
public class C
{
public void Do()
{
//How to get Type of object to reference to current object C
//Example: Either type A or B
}
}
在C 类的方法Do 中,我想获取当前对象C 引用的当前父对象(通过Pro1 和Pro2)。在此示例中为 A 或 B,但一般来说,它可能是非常动态的:
var a = new A() { Pro1 = new C() };
a.Pro1.Do(); //will get Type A in Do
var b = new B() { Pro2 = new C() };
b.Pro2.Do(); //with get Type B in Do
我可以通过哪种方法实现这一目标?
【问题讨论】:
-
你在
Do做什么?实现这种行为有更简洁的方法(例如A和B实现一个通用接口并传递它们),而不是对类型做出反应,这很快就会变得丑陋。 -
@AustinSalonen:我试图从这个问题中弄清楚并引导我到这一点:stackoverflow.com/questions/12552646/…
-
与导致这个问题的原始问题一样,如果不对类进行一些重新定义,就没有直接的方法来完成所要求的事情。也许添加泛型类型参数,也许添加某种接口,什么的。如果您保留问题中所写的类,则 C 的实例无法知道它是从 A.Pro1 还是 B.Pro2 获得的。例如,这两个属性返回的对象甚至可能是完全相同的对象!
-
我在您链接的 Mattias 的问题中添加了一个新建议。希望这能让他走上正轨。