背景:方法传入一个类名和一个字典,需要根据不同的类名去实例化不同的对象
namespace Demo.Model.Dto {
// 定义实体类
public class Student {
private string name;
private int age;
private string grade;
private string major;
}
public class Stuff {
private string name;
private int age;
private string department;
private string post;
}
}
using System.Reflection;
public void createInstance(string className, Dictionary<string, string>) {
string fullName = "Demo.Model.DTO." + className;
Type? instanceClass = Assembly.Load("Demo.Model").GetType(fullName);
var myInstance = instanceClass?.Assembly.CreateInstance(fullName);
PropertyInfo[]? propertyInfos = instanceClass?.GetProperties();
if (myInstance != null && propertyInfos?.Count() > 0)
{
foreach (var prop in propertyInfos)
{
string propNm = prop.Name;
if (propertyMap.ContainsKey(propNm))
{
string cellNm = propertyMap[propNm];
prop.SetValue(myInstance, map[cellNm]);
}
}
}
}
可以用以下方式获取实体类的fullName
string fullNm = typeof(Student).FullName; //Demo.Model.DTO.Student
在C#开发中,当需要根据类名动态创建对象时,可以通过类的全名来实现这一目标。常见场景是接收一个类名字符串和相关参数,然后依据类名实例化对应的对象。
8914

被折叠的 条评论
为什么被折叠?



