首页 新闻 会员 周边 捐助

[求助]反射带 Virtual 的关键字的属性

0
悬赏园豆:15 [已解决问题] 解决于 2014-10-10 14:40

昨天有问过,回复都是获取属性的 Set 或 Get 访问器来判断,这是不太准的。

自己又添加些判断,以为解决了,刚用到实现代码中测试下,死的更惨......

 

先贴出,代码:

        private class TestClass : ITest
        {
            public string Metal { get; set; }
            public virtual string Wood { get; set; }
            public string Water { get; set; }
            public string Fire { get; set; }
            public virtual string Earth { get; set; }
        }

        private interface ITest
        {
            string Metal { get; set; }
            string Wood { get; set; }
        }

我想通过下面的方式来获得到两个带有 Virtual 关键字的属性。

var x = typeof(TestClass).GetProperties()

还要添加些什么判断???

 

如果有再追加豆....

Srouni的主页 Srouni | 初学一级 | 园豆:9
提问于:2014-10-10 14:32
< >
分享
最佳答案
0

我昨天的回答你没有仔细看啊。最后的一个回答已经已经排除Interface的干扰了。

isVirtual=True and isFinal=False 就行了。

如果是Interface的情况 isFinal=True。

收获园豆:15
爱编程的大叔 | 高人七级 |园豆:30844 | 2014-10-10 14:36

对不起,真没注意到 IsFinal ......

Srouni | 园豆:9 (初学一级) | 2014-10-10 14:40

再追下,如果 TestClass 继承了个 抽象类。有什么像 IsFinal 这样的属性或方法来判断么?

        private class TestClass : AbstractClass
        {
            public override string MyProperty { get; set; }
        }

        private abstract class AbstractClass
        {
            public abstract string MyProperty { get; set; }
        }

我在过滤这种属性时,用的是找到基类,排除 abstract 属性。

Srouni | 园豆:9 (初学一级) | 2014-10-10 15:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册