تغییر PartCreationPolicy پیش فرض در MEF
نویسنده: مسعود پاکدل
تاریخ: ۱۳۹۲/۰۳/۲۲ ۸:۳۰
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
[Export]
[PartCreationPolicy( CreationPolicy.NonShared )]
internal class ShellViewModel : ViewModel<IShellView>
{
private readonly DelegateCommand exitCommand;
[ImportingConstructor]
public ShellViewModel( IShellView view )
: base( view )
{
exitCommand = new DelegateCommand( Close );
}
}public class CustomCompositionContainer : CompositionContainer
{
public CustomCompositionContainer(ComposablePartCatalog catalog)
: base(catalog)
{
}
protected override IEnumerable<Export> GetExportsCore(ImportDefinition definition)
{
definition = AdaptDefinition(definition);
return base.GetExportsCore(definition);
}
private ImportDefinition AdaptDefinition(ImportDefinition definition)
{
ContractBasedImportDefinition namedDefinition = definition as ContractBasedImportDefinition;
if (namedDefinition != null && namedDefinition.RequiredCreationPolicy == CreationPolicy.Any)
{
definition = new ContractBasedImportDefinition(namedDefinition.ContractName,
namedDefinition.RequiredMetadata,
namedDefinition.Cardinality,
namedDefinition.IsRecomposable,
namedDefinition.IsPrerequisite,
CreationPolicy.NonShared);
}
return definition;
}
}