none
请问如何调用一个 Type 的 static 成员? RRS feed

  • 问题

  • 利用反射得到了某个 Type,已知 Type 实现了接口 ITest,ITest 包含 static 属性 MyProperty,请问如何调用这个 ITest.MyProperty?

    EFanZh

    2012年4月6日 15:38

答案

  • 接口好像不能够包含静态成员的吧?或者你给出完整的代码,并且指出你要完成什么?

    如果是一个普通类包含静态成员,你可以这样做:

    namespace CSharp
    {
        public class MyClass
        {
            public static string MyProperty
            {
                get
                {
                    return "This is a static property……";
                }
            }
        }
        public class Program
        {
            static void Main(string[] args)
            {
                object obj = typeof(MyClass).GetConstructor(Type.EmptyTypes).Invoke(null);
                Console.WriteLine(typeof(MyClass).GetProperty("MyProperty", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.Public).GetValue(
                   obj , null));
            }
        }
    }

       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年4月7日 2:35
    版主
  • 如果要求子类必须重写该方法呢?

    EFanZh

    普通类方法可以通过重载(virtual)指定此方法可以被重写(或者干脆定义成抽象方法,表明该类方法必须重写;当然类也必须定义成抽象类),但是静态的是不能被重写的。谢谢!

       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年4月7日 5:48
    版主

全部回复