代码之家  ›  专栏  ›  技术社区  ›  zadam

使用反射来确定调用哪个基类构造函数

  •  1
  • zadam  · 技术社区  · 14 年前

    在类型上使用反射 DerivedClassB 我们能确定:

    b) 它传递的实际值?

    public class BaseClass
    {
        public BaseClass()
        {            
        }
    
        public BaseClass(string someParameter)
        {            
        }
    }
    
    public class DerivedClassA : BaseClass
    {
        public DerivedClassA()
        {            
        }
    }
    
    public class DerivedClassB : BaseClass
    {
        public DerivedClassB(): base("canWeFindThis")
        {            
        }
    }
    
    2 回复  |  直到 10 年前
        1
  •  4
  •   Mark Cidade    14 年前

    (一) 对。从技术上讲,如果您从 ConstructorInfo.GetMethodBody()

    (二) 在您的例子中,是的,但通常不是。反射只能用于反映静态数据,而不是运行时动态,因此您将无法使用它来知道哪些值作为参数传递给构造函数,除非它被指定为文本,就像您所做的那样,在这种情况下,您可以使用与上面相同的技术 ConstructorInfo.GetMethodBody()

        2
  •  1
  •   zadam    14 年前

    作为后续工作,我意识到传递给基类的值实际上是通过基类上的属性公开的。

    因此,对于我的场景,我只是实例化了类型,然后询问属性的值,以找出构造函数中实际传递的内容。嗯。