Я знаю, что было много вопросов относительно внедрения параметров конструктора с использованием MEF, но мой немного отличается.
Я хочу знать, есть ли способ передать разные значения параметров конструктору части, когда я использую комбинацию 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
, а затем удаляю значение из очереди в конструктор детали. Но это взлом, который также создает больше проблем, чем решает.Спасибо за любую помощь. :)
С уважением,
Yogesh Jagota