【发布时间】:2014-12-02 14:42:38
【问题描述】:
下面是两个类,其中一个使用 ImportingConstructor 导入另一个类,并直接从 ctor 抛出 MyException。所以,我希望在另一个类中捕获 MyException,但我得到了另一个类,即:
System.InvalidOperationException: GetExportedValue cannot be called before prerequisite import 'Class1..ctor ' has been set. (...)
如何强制 MEF 抛出原始异常,或者至少将原始异常包装到某个异常中,以便我可以从我的代码中处理它?
[Export]
class Class1
{
public Class1()
{
(....)
throw new MyException("MyException has been thrown");
}
}
class Class2
{
[ImportingConstructor]
public Class2(Class1 class1)
{
(....)
}
}
static void Main(string[] args)
{
var catalog = new AggregateCatalog(
new AssemblyCatalog(typeof (Class1).Assembly));
CompositionContainer container = new CompositionContainer(catalog, true);
try{
Class2 class2 = container.GetExportedValue<Class2>();
}
catch(MyException ex){...}
}
【问题讨论】: