我一直关注这个关于CompositionContainer
类(System.ComponentModel.CompositionHosting
)的MSDN示例:
[Export]
class MyAddin
{
public String myData { get { return "The data!"; } }
}
class MyProgram
{
[Import]
public MyAddin myAddin { get; set; }
}
class Program
{
static void Main(string[] args)
{
AggregateCatalog catalog = new AggregateCatalog();
catalog.Catalogs.Add(new AssemblyCatalog(typeof(MyAddin).Assembly));
CompositionContainer _container = new CompositionContainer(catalog);
MyProgram myProgram = new MyProgram();
_container.SatisfyImportsOnce(myProgram);
Console.WriteLine(myProgram.myAddin.myData);
Console.ReadLine();
_container.Dispose();
}
}
但是当我尝试编译它时,会生成以下错误消息:
错误2最佳重载方法匹配 'System.ComponentModel.Composition.Hosting.CompositionContainer.SatisfyImportsOnce(System.ComponentModel.Composition.Primitives.ComposablePart)' 有一些无效的 参数X:\ Dev \ S-L \ CSharp \ EtceteraSolution \ CompositionContainer_Demo \ CompositionContainer_Main.cs 15 13 CompositionContainer_Demo
答案 0 :(得分:4)
您缺少可以执行此操作的扩展方法。您只需在程序之上添加正确的using
即可。我想这个示例并没有显示必要的usings
。
在您的程序中添加using System.ComponentModel.Composition
,扩展方法应该可以正常工作。
或者,也可以像这样调用extensionmethod:
AttributedModelServices.SatisfyImportsOnce(_container, myProgram);
请注意,它位于.NET framework> = 4.0。