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