我想知道如何在我的自定義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始終爲空。
如何配置容器和/或提供商以便滿足導入?
我們不能撤回選票。但是現在你可以自己動手編輯了(是的,我正在談論另一個答案) – NullUserException 2012-01-06 17:52:30