1
我無法確定MEF DisableSilentRejection選項的功能。我想認爲,使用這個選項會提高組合錯誤的清晰度,尤其是在依賴項缺少請求對象下幾個級別的情況下。但是,它似乎對錯誤消息沒有任何影響。CompositionOptions.DisableSilentRejection無法正常工作
我正在使用此測試用例來調查MEF如何報告錯誤。我有一個依賴關係鏈Foo1 - > foo2的 - > Foo3:
[Export]
public class Foo1
{
[ImportingConstructor]
public Foo1(Foo2 foo2)
{
}
}
[Export]
public class Foo2
{
[ImportingConstructor]
public Foo2(Foo3 foo3)
{
}
}
[Export]
public class Foo3
{
}
而這個代碼從MEF容器請求Foo1對象:
try
{
using (var exportProvider = new CatalogExportProvider(
new TypeCatalog(typeof(Foo1), typeof(Foo2))))
using (var container = new CompositionContainer(
CompositionOptions.DisableSilentRejection, exportProvider))
{
exportProvider.SourceProvider = container;
container.GetExportedValue<Foo1>();
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
Console.WriteLine(e.StackTrace);
}
上面的代碼將打印的組合物的異常,因爲TypeCatalog
中缺少Foo3
。這就是我的預期。
但是,錯誤消息仍然抱怨缺少Foo1
導出,而不是提供有關Foo2-Foo3依賴關係的明確錯誤。這不是DisableSilentRejection應該解決的問題嗎?我錯過了什麼?