使用参数初始化未知类型的最佳方法?

时间:2015-12-21 22:10:19

标签: c# reflection mef

我试图通过能够实例化从基类继承的对象而不知道这些对象的类型来对我们的一些代码进行泛化。所以我希望能够在目录中删除一个dll并能够实例化这些对象。

我正在研究MEF,但我无法导出参数,因为它们没有在代码中定义(从数据库加载)。所以它看起来不像是MEF。

反思很有效,但这似乎太脆弱了,无法依赖。

是否有一些我错过的东西可以让我用MEF做到这一点,是否有另一个框架可以让我更好地做到这一点,或者仅仅反映这里的答案?

1 个答案:

答案 0 :(得分:0)

如果你只生成一个dll(程序集)的实例,你就不知道有什么可以尝试做类似的事情:

_binaryData = File.ReadAllBytes(_path);
temporary   = Assembly.Load(_binaryData);

foreach (Type type in temporary.GetTypes().Where(x =>  typeof(IBase) ).IsAssignableFrom(x))
    var istance = (IBase) FormatterServices.GetUninitializedObject(x)

我不建议这样做,我建议另一个方法,在加载它之前在该dll上存储辅助信息或在你的dll类型上使用属性来帮助分析(然后加载)。