对象是否可以知道它是一个字段的类的名称?

时间:2017-06-10 00:24:58

标签: c#

当一个类的实例中的一个字段属于另一个类时,另一个类的实例是否可以知道它是一个字段的类的名称?

例如,

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()?感谢。

1 个答案:

答案 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);   
    }
}