0

私は抽象クラスを持っています

public abstract class BaseEntityDate<T> where T : class
    {
void ExecFunction ( T[] I )
{
}

}

次の抽象クラスはこれを使用します

public abstract class BaseBOList<T> : T where T : class
    {
public void SomeFunction ( T[] VarObj )
{
BaseEntityDate<T> ObjectData = Activator.CreateInstance<BaseEntityDate<T>>();

ObjectData.ExecFunction ( VarObj );

}
}

public class MyClass
{
}

そして、継承クラスを作成します

public class NyInhClass : BaseBOList<MyClass>
{
}


MyClass[] ArrayMyClass = new MyClass[]() { new MyClass() };

NyInhClass  TestOb = new NyInhClass ();

TestOb.SomeFunction ( ArrayMyClass );

また次の使用例

public class MyClass2
    {
    }

そして、継承クラスを作成します

public class NyInhClass2 : BaseBOList<MyClass2>
{
}


MyClass2[] ArrayMyClass2 = new MyClass2[]() { new MyClass2() };

NyInhClas2s  TestOb = new NyInhClass2 ();

TestOb.SomeFunction ( ArrayMyClass2 );

等々

発生した例外「CANNOT CREATE ABSTRACT CLASS」

私を助けることができますか?

4

1 に答える 1

0

このようにしてみてください:

object ExecuteBaseEntityDate ( T _Var )
{
    return Activator.CreateInstance(typeof(T));
}

この例ではActivator.CreateInstance、ジェネリックではありませんが、実行時に型パラメーターを動的に受け取るオーバーロードを使用しています。

于 2013-03-17T14:25:42.270 に答える