CSh*_*per 1 c# types class derived
我有一个基类和一些派生类
public class MyBase {...}
public class MyClass1 : MyBase {...}
public class MyClass2 : MyBase {...}
Run Code Online (Sandbox Code Playgroud)
现在我想列出这些派生类(类!!不是类的实例!),然后我想随机创建这些派生类之一的一个实例.
这是如何运作的??
这里我想要的伪C#:)
List<MyBase> classList = new List<MyBase> () { MyClass1, MyClass2, MyClass3, ...}
MyBase randomInstance = new classList[random.Next(0,classList.Count-1)]();
Run Code Online (Sandbox Code Playgroud)
(不幸的是,这个List构造需要MyBase的实例而不是类名)
类似的东西(假设一个no-args构造函数,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)]);
Run Code Online (Sandbox Code Playgroud)
您可以从这样的类型创建
class MyBase
{
}
class MyClass1 : MyBase
{
}
class MyClass2 : MyBase
{
}
Run Code Online (Sandbox Code Playgroud)
这使用System.Activator来创建对象.
void Main()
{
var typesToPickFrom = new List<Type>()
{
typeof(MyBase),
typeof(MyClass1),
typeof(MyClass2)
};
var rnd = new Random();
Type typeToCreate = typesToPickFrom [rnd.Next(typesToPickFrom.Count)];
object newObject = Activator.CreateInstance(typeToCreate);
}
Run Code Online (Sandbox Code Playgroud)
您可以根据需要进行投射.
| 归档时间: |
|
| 查看次数: |
2012 次 |
| 最近记录: |