我有一个私有类,用于实现某些属性。因此,我无法修改实际的私有类,并且不想使用继承来创建自己的类代替它。有没有办法可以向该私有类添加属性?
谢谢!
我有一个私有类,用于实现某些属性。因此,我无法修改实际的私有类,并且不想使用继承来创建自己的类代替它。有没有办法可以向该私有类添加属性?
谢谢!
如果您可以访问所需类中的数据,并且可以使用方法而不是属性,请查看在C# 3.0中引入的扩展方法。从该文章中,以下是添加到(封闭的,不可修改的)String类的扩展方法:
public static class MyExtensions
{
public static int WordCount(this String str)
{
return str.Split(new char[] { ' ', '.', '?' },
StringSplitOptions.RemoveEmptyEntries).Length;
}
}
据权威消息人士Eric Lippert透露,C#的未来版本可能会支持扩展属性。
然而,如果您需要访问私有字段或方法,则无济于事。在这种情况下,您可以考虑使用反射,但我建议除非确实必要,否则不要使用它 - 它有时会变得混乱。