我想知道当我使用PartCreationPolicy(CreationPolicy.NonShared)
和GetExportedValue
的组合时,有什么方法可以将不同的参数值传递给零件的构造函数吗?
例如:
[PartCreationPolicy(CreationPolicy.NonShared)]
[Export]
public partial class Foo
{
[ImportingConstructor]
public Foo([Import("SomeParam")]object parameter)
{
...
}
}
以及其他地方...
container.ComposeExportedValue("SomeParam", "Some value...");
var instance = container.GetExportedValue<Foo>();
在上述示例中,我只能使用ComposeExportedValue
一次,因为第二次运行将导致ChangeRejectedException
。所以,我的问题是:
SomeParam
的值吗?System.Collections.Concurrent.ConcurrentQueue
的东西,在调用GetExportedValue
之前我先将参数值放入队列,然后在部件的构造函数中使该值出队。但这是骇客行为,还会带来更多无法解决的问题。我知道关于使用MEF注入构造函数参数有很多问题,但是我的有所不同。我想知道有什么方法可以将不同的参数值传递给...
如果以上两个问题的答案都为否,那么是否还有其他方法可以通过结合MEF和其他DI / IOC框架来实现这一目标?