在C#中有可能創建一個可以從內部(非封裝)派生的類,但是阻止其他人從外部引用我的庫從我的公共類繼承(密封)?我可以讓一個班開啓內部但封閉外部嗎?
6
A
回答
9
我想你可以使類internal
的構造函數只有你的程序集中的其他類可以從它們派生出來,如果你仍然需要創建那個類的實例,你可以提供一個工廠方法來返回實例。
編輯添加一個樣本:
public class MyFoo
{
internal MyFoo()
{
}
public static MyFoo CreateFoo()
{
return new MyFoo();
}
}
5
埃裏克利珀指出三種方式來做到這一點。 tl; dr:不封閉你的類,但在你的類中包含一個內部抽象方法,或者使所有的構造函數內部或者私有,或者使用PermissionSet
屬性向類中添加元數據。
0
您也可以嘗試做這樣的事情。
internal class InternalExtendible
{
public string MyProperty { get; set; }
}
public sealed class ExternalSealedClass : InternalExtendible
{
}
創建一個內部類並創建一個繼承自內部類的公共空類。當引用dll時,只有公共類對用戶可見,但內部類的所有功能都將暴露。
相關問題
- 1. 我可以從偏好內部啓動一個方法嗎?
- 2. 我們可以在方法內部有一個內部類嗎?
- 3. 意外的尾部封閉
- 4. 我可以創建一個類型爲「內部類型除外的密封」
- 5. 我可以編寫一個開啓/關閉USB的程序嗎
- 6. 外部事件可以導致打開的DbConnection關閉嗎?
- 7. 我可以禁止外部可執行文件內容(外部javascript)嗎?
- 8. jQuery的內部封閉
- 9. 我可以在另一個內部啓動一個Django模型對象嗎
- 10. 我可以讓Tomcat 7部署配置的webapps,但不啓動它們嗎?
- 11. iPhone:我可以讓一個UIDatePicker出現在UIKeyboard的頂部嗎?
- 12. 我可以使用Robotium關閉外部應用程序嗎?
- 13. 封閉班級
- 14. 班級領域可以密封嗎?
- 15. 我的RecyclerView.ViewHolder可以是一個非靜態的外部類嗎?
- 16. 我可以得到一個外部域的HTML的一部分?
- 17. 我們可以關閉沒有內部功能嗎?
- 18. 我可以在內部進行交易關閉嗎
- 19. javascript這個封閉的外部函數有一個綁定'this'
- 20. 阻止外部Struts動作,但可以在內部訪問?
- 21. OpenESB:(How)我可以部署一個外部創建的BPEL流程嗎?
- 22. accordition部分封閉在啓動jQueryUI的
- 23. 我可以在SQL CLR中打開外部文件嗎?
- 24. JQuery:我可以使用對話框打開外部網頁嗎?
- 25. 外部類可以調用其內部類的方法嗎?
- 26. 我可以在SQL UPDATE內部有一個SELECT嗎?
- 27. 我可以注入一個內部類的對象嗎?
- 28. 我可以從JavaScript內部分配一個jade變量嗎?
- 29. 我可以在python中測試一個內部函數嗎?
- 30. 我可以創建一個內部靜態類的實例嗎?
很酷,很好。謝謝! – 2010-11-05 03:29:51