对于“a.b.c()”,a是类,b是属性。但是b属性又有自己的方法和属性,在类库中查到b属性不是类而是接口,请问是哪个类实现了接口b?肯定不是类a实现了b接口,因为输入a.后的智能提示里就没有方法c();另问:接口名b可以作为类a的属性吗?

解决方案 »

  1.   

    可以c.GetType().Name属性得到它是什么类型的
      

  2.   

    对于“a.b.c()”,a是类,b是属性。但是b属性又有自己的方法和属性,在类库中查到b属性不是类而是接口,请问是哪个类实现了接口b?
    b属性中保存了实现了某一接口(假设为I)的类的实例,但不能说b就是接口。比如:interface I
    {
        int GetValue();
    }
    class A
    {
        public I b
        {
           get; set;
        }
    }类a中有个属性b,b中保存的是实现了接口I的类的实例。例如,类c实现了接口I,那么你完全可以:class c : I
    {
     // ....
    }A a = new A();
    a.b = new c();但如果你要单从a.b这个角度去看是谁实现了接口I,这样做既不容易,也没有意义。因为实现了接口I并且赋值给属性b的类很有可能是运行时动态生成的,这有点像attribute injection。