4
A
回答
9
如果您可以访问您需要的类中的数据,并且可以使用方法而不是属性,请查看在C#3.0中引入的extension methods。从这篇文章中,这里的加入到(密封的,不可修改)String类的扩展方法:
public static class MyExtensions
{
public static int WordCount(this String str)
{
return str.Split(new char[] { ' ', '.', '?' },
StringSplitOptions.RemoveEmptyEntries).Length;
}
}
从the horse's mouth,扩展性质是在C#未来版本的可能性。
如果您需要访问私人字段或方法,这不会对您有所帮助。在这种情况下,你可能会考虑反思,但我建议不要这样做,除非它真的有必要 - 有时候它可能会变得混乱。
1
如果属性的目的是为了数据绑定,那么您可以在控制使用TypeDescriptionProvider
,这是一个ICustomTypeDescriptor
工厂外面添加运行属性类型。然后,您会链接原始提供商并创建一个自定义PropertyDescriptor
,获取附加数据。
这对于基于现有属性(以及“相当容易”我的意思是“仅略微疯狂”)计算的只读额外属性是相当容易的,但对于读写属性(或属性是独立于现有成员)这是非常困难的,因为你需要弄清楚在哪里把这些值(仍然得到垃圾收集等)。不平凡的。
相关问题
- 1. 将属性添加到库中的现有类
- 2. 添加属性吨现有类
- 3. Uml-Designer:将java.net.URL属性添加到类
- 4. 帮助将属性添加到LinqToSql类
- 5. 将属性添加到关联类ManyToMany
- 6. ArrayIndexOutOfBoundsException将属性添加到常规类
- 7. 将附加属性添加到现有控件中
- 8. 可能通过C#将类添加到对象的现有类属性?
- 9. 将属性添加到TTPhoto
- 10. 将属性添加到TreeNode
- 11. 将属性添加到BehaviorExtensionElement
- 12. 将属性添加到EventArgs
- 13. 将属性添加到GeoJSON
- 14. 将属性添加到Q_PROPERTYs
- 15. 使用属性编辑器将属性添加到类
- 16. 如何将新属性添加到gremlin中的现有顶点?
- 17. 将新属性添加到FOR循环中现有的JSON
- 18. 使用JAVA将属性添加到LDAP中的现有用户
- 19. 将属性动态添加到现有对象中
- 20. 如何将属性添加到Java中的现有XML元素?
- 21. 将属性添加到现有的xcdatamodel崩溃Xcode 4.2
- 22. 将多个属性添加到现有的js对象
- 23. 如何将IDENTITY属性添加到现有的SQL Azure表中?
- 24. 无法将新属性添加到现有模型sails.js
- 25. 我可以将ivar(或属性)添加到objective-c中的现有类中吗?
- 26. 如何将属性添加到打字稿中的现有类型?
- 27. 将属性添加到UIViewController及其所有子类
- 28. OWL,将属性添加到类的所有实例
- 29. C#XmlSerializer的添加属性到现场
- 30. 添加属性,以现有的VBA
严格地说,C#3.0(不是.NET 3.0),因为如果你只是定义属性,你可以使用扩展方法来对*任何*版本的.NET。 – 2010-09-28 07:36:24
@Marc:d'oh!编辑,谢谢。 – 2010-09-28 07:50:25