c# - 遍历扩展类列表并动态创建对象
问题描述
我想遍历扩展类“A”并创建扩展类类型的对象的类列表。
有没有办法替换“new className();”中的类名 使用变量还是必须使用 switch 语句来创建不同类型的对象?
List <A> listOfSubClasses; //A list of classes that all extend "A"
List <A> objects; //List to hold created objects
int[] variable;
foreach (A subClass in listOfSubClasses){
for (int i = 0; i < 3; i++){ //Let's say I want to create 3 objects of every class
objects.Add (new subClass()); //This is the line my question refers to
objects[objects.Count - 1].someParameter = variable[i];
}
}
解决方案
您可以使用 aList<Type>
存储要实例化的类型,然后使用System.Activator.CreateInstance从该类型创建实例
using System;
using System.Collections.Generic;
public class A
{
public int someParameter;
}
public class B : A {}
public class C : A {}
public class D : A {}
public class Program
{
public static void Main()
{
List <Type> listOfSubClasses = new List<Type>
{
typeof(B),
typeof(C),
typeof(D)
};
List <A> objects = new List<A>();
int[] variable = { 1, 2, 3 };
foreach (var subClass in listOfSubClasses) {
for (int i = 0; i < 3; i++) {
objects.Add((A)Activator.CreateInstance(subClass));
objects[objects.Count - 1].someParameter = variable[i];
}
}
}
}
推荐阅读
- python - 字符集之间的“大于或等于”比较如何工作
- file - Cloudera 集群可用于与集群外的系统交换文件
- python - Python plot y 轴平均标签不会显示并且日期都是人群
- django - 如何将模型表单集中的数据显示为manytomanyfield的外键作为带有通过验证的预填充数据的只读文本?
- python - 如何动态更改散景图段线宽
- nginx - Nginx 流模块传递上游服务器的 FQDN 作为 TLS 握手的默认 SNI
- powershell - RoboCopy 失败但没有错误消息
- image - TWICImage:如何保存透明的 BMP?
- python - 如何在特定条件下在 webull api 上进行销售以及使用 python 进行一般算法交易
- javascript - 在 Google 表格侧边栏中使用 React Hooks 时出错(Google Apps 脚本)