- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们正在使用 美孚 在 WPF 应用。
我们得到了这个错误 :
GetExportedValue cannot be called before prerequisite import 'MyNamespace.MyMainClass..ctor (Parameter="myParameter", ContractName="IContractInterface")' has been set.
var container = new CompositionContainer(catalog, true);
[Export(typeof(IMyInterface)]
public class MyMainClass: IPartImportsSatisfiedNotification, IMyInterface
{
[Import]
public IContainer Container { get; private set; }
[Import(AllowDefault = true)]
public IMySubClass MySubClass { get; set; }
[ImportingConstructor]
public MyMainClass([Import(AllowDefault = true)] IContractInterface myParameter= null)
: this()
{
if (myParameter!= null)
{
//Do Something with myParameter
}
}
public void OnImportsSatisfied()
{
if (MySubClass == null)
{
MySubClass = new MySubClass();
Container.SatisfyImportsOnce(MySubClass);
}
//Some other stuff
}
public class MySubClass : IPartImportsSatisfiedNotification, IMySubClass
{
[ImportMany]
public Lazy<IMyAttributeInterface, IMyAttributeInterfaceMetadata>[] Exports { get; set; }
public void OnImportsSatisfied()
{
foreach (var export in Exports)
{
var value = export.Value; //Here it throws the Exception
//Do something.
}
}
var value = export.Value;
public interface IMyAttributeInterfaceMetadata
{
string Property1 { get; }
string Property2 { get; }
}
[MetadataAttribute]
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property | AttributeTargets.Class, AllowMultiple=false, Inherited=false)]
public class MyExportAttribute : ExportAttribute, IMyAttributeInterfaceMetadata
{
string Property1 { get; }
string Property2 { get; }
public MyExportAttribute(string property1, string property2)
: base(typeof(IMyAttributeInterface))
{
Property1 = property1;
Property2 = property2;
}
}
最佳答案
由于在延迟导出时调用 export.Value 时会引发异常,因此您可以了解发生了什么问题。
直到那时才构建延迟导入的导出 - 它只是“发现”并获得了它的元数据。但是,一旦调用了它的值,就需要实际实例化惰性导出。
此时,它的 DLL 将被加载(因此,如果您在这里缺少任何依赖项,您可能会遇到异常,但这不是您的问题)并且导出的类将被构造以满足 MySubClass 中的导入。如果导出需要另一个导入(通过 ImportingConstructor 或单独的 Import),那么它将尝试解决/实例化它等等。
我认为您获得异常的最可能原因不是您的 MainClass 或 SubClass,而是您的 SubClass 中的导入。他们是否有任何要导入的依赖项?那些被正确解决了吗?尝试在那里进行调查。
也可以是一定要检查异常 中的 InnerExceptions你已经捕获了!它经常沿着整个导入链的兔子洞走下去,直到它到达实际失败的地步。
关于c# - 在设置先决条件导入之前无法调用 GetExportedValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21309467/
我们正在使用 美孚 在 WPF 应用。 我们得到了这个错误 : GetExportedValue cannot be called before prerequisite import 'MyName
我想将 MEF 用作我项目的 DI。我有 1 个项目,每个应该组成的类都驻留在那里(它们共享一个接口(interface))。现在我想通过指定元数据值来创建其中之一。以下是定义: public int
我有一个奇怪的 MEF 问题,我在一个测试项目中对此进行了测试,它似乎工作得很好,但由于某种原因在实际项目中不起作用 这是导出代码 public void RegisterComponents
我们在 MVVM 应用程序中使用 MEF(.NET 4,目前不能使用 4.5)。一切都很好,直到我们需要动态创建模型,例如表格的可编辑行。我不想遇到内存泄漏,我找到了这篇文章 http://pglaz
我正在使用 MEF发现和实例化插件并希望使过程尽可能健壮。特别是我不希望一个写得不好的插件对主机或其他插件的执行产生不利影响。 不幸的是,我在使用 GetExportedValues() 时发现了这一
在过去的几个月里,我一直在使用社区预览版开发托管可扩展性框架应用程序。我一直在使用 GetExportedValues()方法和 PartCreationPolicy(CreationPolicy.N
我是一名优秀的程序员,十分优秀!