【问题标题】:Why SatisfyImportsOnce method doesn't work with the object parameter?为什么 SatisfyImportsOnce 方法不适用于对象参数?
【发布时间】:2014-10-25 17:48:52
【问题描述】:

我一直在关注这个关于 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

示例来源:http://msdn.microsoft.com/en-us/library/system.componentmodel.composition.hosting.compositioncontainer%28v=vs.110%29.aspx

【问题讨论】:

  • 最好在文本格式中提供这两个错误并指出它抱怨的行,而不是上传可能会在一个月内消失的图像。

标签: c# .net


【解决方案1】:

您缺少可以做到这一点的扩展方法。您只需在程序顶部添加正确的using。我猜这个例子没有显示必要的usings

你要找的方法是:public static ComposablePart SatisfyImportsOnce(this ICompositionService compositionService, object attributedPart);

在您的程序中添加using System.ComponentModel.Composition,扩展方法应该可以正常工作。

另外,也可以像这样调用扩展方法:

AttributedModelServices.SatisfyImportsOnce(_container, myProgram);

注意,它在 .NET 框架中 >= 4.0。

【讨论】:

    猜你喜欢
    • 2016-05-14
    • 2013-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-06
    • 1970-01-01
    • 2015-03-16
    • 2014-12-14
    相关资源
    最近更新 更多