1

基本クラスといくつかの派生クラスがあります

public class MyBase {...}
public class MyClass1 : MyBase {...}
public class MyClass2 : MyBase {...}

ここで、これらの派生クラス (クラス!! クラスのインスタンスではありません!) のリストを作成し、これらの派生クラスの 1 つのインスタンスをランダムに作成したいと考えています。

これはどのように作動しますか??

ここで私が疑似C#で欲しいもの:)

List<MyBase> classList = new List<MyBase> () { MyClass1, MyClass2, MyClass3, ...}

MyBase randomInstance = new classList[random.Next(0,classList.Count-1)]();

(残念ながら、この List 構築は MyBase のインスタンスを想定していますが、クラス名は想定していません)

4

3 に答える 3

6

次のようなもの (引数なしのコンストラクターで、B と C が A から派生していると仮定):

List<Type> types = new List<Type> { typeof(A), typeof(B), typeof(C) };

A instance = (A)Activator.CreateInstance(types[r.Next(0, types.Count)]);
于 2013-04-25T19:06:03.190 に答える
3

あなたが言うように、ランダムなインスタンスを「作成」したい場合:

var selection = random.Next(0,2)

switch (selection)
{
    case 1: return new MyBase();
    case 2: return new MyClass1();
    case 3: return new MyClass2();
}

interfaceメソッドから何かを返すことができるように、これらすべてのクラスに共通のものを定義すると便利な場合があります。objectまたは、単純にまたはを返すこともできますdynamic

于 2013-04-25T19:00:20.610 に答える