当一个类的实例中的一个字段属于另一个类时,另一个类的实例是否可以知道它是一个字段的类的名称?
例如,
public class ClassA
{
public void MethodA()
{
... // can an ClassA instance know the name of the class of which it is a field?
}
}
public class ClassB
{
Public ClassA objA;
public void MethodB()
{
objA.MethodA();
}
}
public class ClassC
{
Public ClassA objA;
public void MethodC()
{
objA.MethodA();
}
}
public static void Main(string[] args)
{
ClassB objB = new ClassB();
objB.MethodB();
ClassB objC = new ClassC();
objC.MethodC();
}
当objB.MethodB()
或objC.MethodC()
调用objA.MethodA()
时,在objA.MethodA()
内,它可以知道objA
是一个字段的类的名称,没有必须将类的名称作为参数传递给objA.MethodA()
?感谢。
答案 0 :(得分:1)
如何使用适当的参数和微小的界面!
C类和B类都可以实现接口ICallers
。实际上,这个界面是一个标记。
class C:ICaller
{
...
}
class B :ICaller
{
...
}
现在A类中的方法可以利用参数来帮助我们确定哪个类调用了方法
public void MethodA(ICaller caller)
{
var class = caller as B;
if(class!=null)
...
}
public class ClassC
{
Public ClassA objA;
public void MethodC()
{
objA.MethodA(this);
}
}