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

时间:2012-10-12 02:02:22

标签: c#

  

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

我正在尝试访问具有受保护构造函数的类中的方法。任何人都可以帮助我如何创建类的实例来访问其中的方法。

谢谢,

Karteek Kuncham

4 个答案:

答案 0 :(得分:3)

具有受保护构造函数的类对于外部世界是不可访问的,而对于其派生类是可访问的。如果你想创建那些Derived类的实例,那么你可以但是如果你想创建那个Base类的实例,那么你可以引入一些Base返回类型的静态方法,它可以在你每次调用时返回你的类的新实例实例方法,类似于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();

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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