实例化大量的类

Ale*_*lam 1 c# .net-core

目前我有一个像这样的类列表:

public List<Algo> AlgoList = new List<Algo>
{
    new BastionAlgo(),
    new BitcoreAlgo(),
    new Blake2SAlgo(),
    new BlakeAlgo(),
    new BlakeCoinAlgo(),
    new BmwAlgo(),
    new C11FlaxAlgo(),
    new CryptolightAlgo(),
    new CryptonightAlgo(),
    ...
};
Run Code Online (Sandbox Code Playgroud)

当我添加和删除类时,我宁愿不必维护一个长列表.有没有办法找到并实例化在.net核心2中扩展另一个类的所有类?

提前谢谢你的帮助.

Jus*_*tin 5

是的,请参阅获取实现接口的所有类型

var type = typeof(Algo);
var types = AppDomain.CurrentDomain.GetAssemblies()
    .SelectMany(s => s.GetTypes())
    .Where(p => type.IsAssignableFrom(p));
Run Code Online (Sandbox Code Playgroud)

如果它们都具有无参数构造函数,则可以使用Activator.CreateInstance创建实例

AlgoList = types.Select(t => Activator.CreateInstance(t)).ToList();
Run Code Online (Sandbox Code Playgroud)