c# - 通过字符串初始化泛型类
问题描述
我有一个字符串“MyClass”。有没有办法通过字符串初始化一个通用对象?
public void LoadToCache<T>(string key) where T : class, new()
{
//string key is a class name like "MyClass"
using (var bl = new BusinessLayer<key>())
{
bl.GetAll();
}
}
//---------------------------------------------------------------
public class BusinessLayer<T> where T : class
{
..
..
}
//---------------------------------------------------------------
public class MyClass
{
..
..
}
解决方案
您可以通过反射从程序集中获取类型并使用Activator.CreateInstance
.
我希望这有帮助:
我的课:
public class Car
{
}
方法:
string myClass = "Car";
var types = Assembly.GetExecutingAssembly().GetTypes().ToList();
var myType = types.FirstOrDefault(i => i.IsClass && i.Name == myClass);
var instance = Activator.CreateInstance((Type) myType);
Console.Write(instance.ToString());
推荐阅读
- python - 循环问题(python):变量未正确评估
- com - 为什么我的 COM 加载项在 Outlook 桌面中丢失?
- pandas - 将每日数据转换为每月数据并在熊猫中获得几个月的最后一个值
- origen-sdk - 如何强制将所有 bin 转换为 93k multibins 的 gem 输出 93k 本机 bin?
- react-native - 在渲染视图时滚动 KeyboardAwareScrollView 以结束
- wordpress - 自定义帖子类型的单个帖子模板覆盖
- api - 管理 Gcal 响应 + 快递和标头问题
- php - Stripe Checkout PHP 导致神秘的 404 错误 OnLoad
- .net-core - 如何使用 MqttNET 在 azure 函数中使用 PEM 文件
- amazon-web-services - ElasticBeanstalk:无法在 GUI 中将环境类型更改为负载平衡?