在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. 我可以编写一个开启/关闭USB的程序吗
- 4. jQuery的内部封闭
- 5. 外部事件可以导致打开的DbConnection关闭吗?
- 6. 我可以让Tomcat 7部署配置的webapps,但不启动它们吗?
- 7. iPhone:我可以让一个UIDatePicker出现在UIKeyboard的顶部吗?
- 8. 我可以得到一个外部域的HTML的一部分?
- 9. javascript这个封闭的外部函数有一个绑定'this'
- 10. accordition部分封闭在启动jQueryUI的
- 11. OpenESB:(How)我可以部署一个外部创建的BPEL流程吗?
- 12. JQuery:我可以使用对话框打开外部网页吗?
- 13. 我可以在SQL UPDATE内部有一个SELECT吗?
- 14. 我可以在python中测试一个内部函数吗?
- 15. 我可以从JavaScript内部分配一个jade变量吗?
- 16. UserControl可以在内部吗?
- 17. 我可以从外部文件中提取html内容吗?
- 18. 我可以在另一个班级初始化班级吗?
- 19. 我们可以说方法局部类是一个内部类的类型吗?
- 20. 我们可以开始一个部分(UITableView)的部分号码?
- 21. 我可以在蜂巢中将表格从内部更改为外部吗?
- 22. 我可以让Entity Framework只使用表格的一部分吗?
- 23. 我可以让webview仅占用屏幕的一部分吗?
- 24. Groovy封闭如何在内部工作?
- 25. 我可以在websphere内部使用外部jdk路径
- 26. 我们可以找两个班吗?
- 27. 我可以从外部文件只导入一段html吗?
- 28. 可编辑内部,但仍然可以在外面看?
- 29. 打开/关闭带有外部内容的多个div
- 30. 我可以打开一个文件让R运行代码吗?
很酷,很好。谢谢! – 2010-11-05 03:29:51