【发布时间】:2022-12-05 15:57:47
【问题描述】:
我有一个界面。该接口名称是 IQueue。我也有具体的课程。它们的名称是 MyMessage1 和 MyMessage2。
public interface IQueue
{
}
public class MyMessage1 : IQueue
{
public string Message { get; set; }
public DateTime PublishedDate { get; set; }
}
public class MyMessage2 : IQueue
{
public string Name { get; set; }
}
我正在通过反射从 IQueue 获取所有具体类并创建一个实例。
var types = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(s => s.GetTypes())
.Where(p => typeof(IQueue).IsAssignableFrom(p) && p.IsClass)
.ToList);
foreach(var type in types)
{
var instance = Activator.CreateInstance(type);
}
实例是一个对象。如何在不使用以下代码的情况下转换为特定类?可能吗。
(MyMessage1)Activator.CreateInstance(type)
(MyMessage2)Activator.CreateInstance(type)
我想使用类型信息创建一个特定的类实例
【问题讨论】:
-
如果您已经知道具体类型 - 为什么不直接使用
new MyMessage1()?