我目前只是通过通用接口(interface)公开属性,例如
public interface IBaseClass
{
int ID { get; set; }
}
internal class MyBaseClass : IBaseClass
{
public MyBaseClass() { }
public int ID { get; set; }
}
public class MyExposedClass : IBaseClass
{
private MyBaseClass _base = new MyBaseClass();
public int ID
{
get { return _base.ID; }
set { _base.ID = value; }
}
}
然后在我的主应用程序中我可以做:
IBaseClass c = new MyExposedClass();
c.ID = 12345;
但是做不到:
MyBaseClass b = new MyBaseClass();
这是我想要的行为。
但是,我只是想知道这是否是正确的方法?或者有没有更好的方法?
最佳答案
如果您只想防止实例化,您可以将 MyBaseClass
抽象化(使其构造函数也受到保护 - 这是一个很好的设计)并从中派生 MyExposedClass
。如果您想完全隐藏类型,您的方法似乎不错。
关于c# - 如何使用类作为基础,但公开隐藏类类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2743277/