C# 根据类名实例化对象

在C#开发中,当需要根据类名动态创建对象时,可以通过类的全名来实现这一目标。常见场景是接收一个类名字符串和相关参数,然后依据类名实例化对应的对象。

背景:方法传入一个类名和一个字典,需要根据不同的类名去实例化不同的对象

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值