-1

可能重复:
带有私有密封类的 Activator.CreateInstance

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

谢谢,

卡提克昆查姆

4

4 回答 4

3

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

public MyDerivedClass : OtherBaseClass
{
    MyDerivedClass() : base()
    { }
}
于 2012-10-12T02:06:34.843 回答
3

外部世界无法访问具有受保护构造函数的类,而其派生类可以访问。如果你想创建那些派生类的实例,那么你可以,但是如果你想创建那个基类的实例,那么你可以引入一些基本返回类型的静态方法,它可以在每次调用时返回你的类的新实例实例方法,类似于单例模式,但不限于创建一个实例。

第一种方式:

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();
于 2012-10-12T02:17:23.110 回答
1

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

于 2012-10-12T02:05:39.823 回答
0

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

于 2012-10-12T02:07:32.110 回答