如何在 C# 中创建具有受保护构造函数的类的实例



可能的重复项:
Activator.CreateInstance with private sealed class

我正在尝试访问具有受保护构造函数的类中的方法。谁能帮我如何创建类的实例以访问其中的方法。

谢谢

卡提克昆湛

我假设您可以创建所描述的类的子类。所需要的只是在自己的类中创建一个构造函数,该构造函数使用所需的任何构造函数参数调用 base()。

public MyDerivedClass : OtherBaseClass
{
    MyDerivedClass() : base()
    { }
}
具有

受保护构造函数的类不能被外界访问,而对其派生类可以访问。如果要创建这些派生类的实例,则可以,但是如果要创建该基类的实例,则可以引入一些 Base 返回类型的静态方法,该方法可以在每次调用 Instance 方法时返回类的新实例,类似于 Singleton 模式,但不限于仅创建一个实例。

第一种方式:

public Base
{
    protected Base() { }
}
public Derived : Base
{
    public Derived() : Base() { } 
}

用法:

Dervied d = new Derived();

第二种方式:

public Base
{
    protected Base() { }
    public static Base Instance() { return new Base(); }
}

用法:

Base b = Base.Instance();

具有受保护构造函数的类位于通常具有某种形式的返回实例的静态方法的类上。

类是抽象类吗?如果是,那么我认为正确的做法是继承该类。

最新更新