MEF - Политика создания изменения по умолчанию к NonShared

Я в настоящее время работаю над использованием MEF, чтобы просмотреть/составить расширения к моим заявлениям. Я хотел бы изменить политику создания по умолчанию на необщий (вместо общего), но иметь его так, чтобы политика создания была сверхъездовой через признаки. Другими словами, если я не определяю политику создания в отношении экспорта, я хочу, чтобы MEF использовал неразделенный.

Мое предыдущее внедрение не работает на меня больше, потому что это изменяет необходимую политику создания для всего импорта. Таким образом, если я отвергаю политику создания, экспорт не становится составленным.

Я искал вокруг и самое близкое, которое я мог получить, новый RegisrationBuilder, но я работаю с.NET 4 (так MEF 1) в VS2010. Я также не мог выяснить путь с ExportProviders.

Любая помощь значительно ценится; заранее спасибо!

4
nl ja de
Я haven' t попробовал TransientCompositionContainer все же, но похоже, что это изменяет CreationPolicy. Любой (дефолт) к CreationPolicy. NonShared. Следовательно импорт с явным CreationPolicy. Разделенный должен все еще работать, и все остальное должно быть переходным.
добавлено автор Panos Rontogiannis, источник
Другой подход (хотя я никогда не пробовал его) должен был бы создать таможенный признак импорта (это должно быть подобно таможенным экспортным рекомендациям по признаку mef.codeplex.com/wikipage? title=Exports%20and%20Metadata) с набором RequiredCreationPolicy к NonShared по умолчанию. Тогда обновите весь импорт с этим признаком. Apparetnly это не столь изящно как TransientCompositionContainer.
добавлено автор Panos Rontogiannis, источник

1 ответы

Мне удалось создать a Обертка MEF то, что я использую в качестве ремешка ботинка приложения. В проектах, где я использую MEF, у меня есть mu пользовательские атрибуты, которые я использую для controle способа приводящего в качестве примера пальца ноги. Пользовательская реализация признака была бы:

[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)]
public class BusinessLogicImportAttribute : ConstraintImportAttribute
{
    public BusinessLogicImportAttribute()
        : base(typeof(IBusinessController))
    {
        base.RequiredCreationPolicy = RequiredCreationPolicy = CreationPolicy.NonShared;
    }
}
0
добавлено
Спасибо, I' ll дают ему выстрел!
добавлено автор pdalbe01, источник
Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot