私は自分のカスタムExportProviderでどのようにインポートを持つことができるか知っています。私がやろうとしていることの例です:カスタムExportProviderのインポートを受け入れる
public class MyExportProvider : ExportProvider
{
private List<Export> _exports;
[Import()]
private IConfig _config;
public MyExportProvider()
base()
{
_exports = new List<Export>();
}
protected override IEnumerable<Export> GetExportsCore(ImportDefinition definition,
AtomicComposition composition)
{
if (!_exports.Any())
Initialize();
return _exports.Where(x => definition.IsConstraintSatisfiedBy(s.Definition);
}
private void Initialize()
{
var contractName = typeof(MyObject).FullName;
var exportDefinition = new ExportDefinition(contractName, null);
var export = new Export(exportDefinition,() => new MyObject(_config));
_exports.Add(export);
}
}
私はCompositionContainerを作成するときにプロバイダを追加しています。
残念ながら、インポートは決して満たされません。 AllowDefaults = trueを設定してプロバイダを作成することができますが、_configは常にnullです。
インポートが完了するようにコンテナおよび/またはプロバイダを設定するにはどうすればよいですか?
逆投票できません。しかし、あなたはそれが編集されているので、自分でそれを行うことができます(はい、私は別の答えについて話しています) – NullUserException