c# - 如何使用类作为基础,但公开隐藏类类型?

标签 c#

我目前只是通过通用接口(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/

相关文章:

c# - 将平面数据库结果集转换为 C# 中的分层对象集合

c# - 从 ATL 到 C# 的 WebBrowser 控件

c# - 如何在 LINQ to Entities 中重用字段过滤器

c# - 使用 Directx DirectSound 从麦克风捕获声音

c# - ModelMetadata.Container 属性为 null

c# - 给定 C# 中的基类,如何实现该类?

c# - EPPlus OfficeOpenXml 检查工作表是否存在,而不将整个文件加载到内存中

c# - ReactiveUI 同步 ReactiveCommand 调用导致 System.InvalidOperationException

c# - 在 localhost 上获取 "remote server cannot be resolved"不会被 defaultProxy 修复?

c# - 在按钮中检测到 ActionLink 存在潜在危险的 Request.Path 值