将属性添加到现有类

loc*_*boy 4 c# properties

我有一个私有类,我用它来实现某些属性.因此,我没有能力修改实际的私有类,也不想使用继承来创建我自己的类来代替它.有没有办法可以向该私有类添加属性?

谢谢!

Mic*_*tta 9

如果您可以访问所需类中的数据,并且可以使用方法而不是属性,请查看C#3.0中介绍的扩展方法.从那篇文章中,这里是一个添加到(密封的,不可修改的)String类的扩展方法:

public static class MyExtensions
{
   public static int WordCount(this String str)
   {
       return str.Split(new char[] { ' ', '.', '?' }, 
                        StringSplitOptions.RemoveEmptyEntries).Length;
   }
}   
Run Code Online (Sandbox Code Playgroud)

马的嘴里,扩展属性是未来版本的C#的可能性.

如果您需要访问私有字段或方法,这对您没有帮助.在这种情况下,你可能会考虑反思,但我建议远离它,除非它确实是必要的 - 它有时会变得混乱.