gpt4 book ai didi

c# - MEF 抛出异常 ImportCardinalityMismatchException?

转载 作者:太空狗 更新时间:2023-10-29 21:45:02 26 4
gpt4 key购买 nike

MEF 抛出 ImportCardinalityMismatchException 的可能原因是什么?

最佳答案

下面的代码演示了如何重现此错误。

要进行测试,请确保使用 .NET 4.5 进行编译,并添加 MEF 程序集:

  • System.ComponentModel.Composition
  • System.ComponentModel.Composition.Registration

问题是 MEF 想要构造一个 Person 对象,但它无法完成“Age”(标记为“Import”)的属性注入(inject)。

要重现错误,请注释掉下面标记的行。

using System;
using System.ComponentModel.Composition;
using System.ComponentModel.Composition.Hosting;
using System.Reflection;

namespace ForStackOverflow
{
public class Program
{
public static void Main(string[] args)
{
var container = new CompositionContainer(
new AssemblyCatalog(Assembly.GetExecutingAssembly()));

// Comment out this next line to get an
// ImportCardinalityMismatchException error
container.ComposeExportedValue("Age", 30);

var person = container.GetExportedValue<Person>();

Console.WriteLine("Persons age: " + person.Age);
Console.WriteLine("[press any key to continue]");
Console.ReadKey();
}
}

[Export]
public class Person
{
[ImportingConstructor]
public Person()
{
}

[Import("Age")]
public int Age { get; set; }
}
}

关于c# - MEF 抛出异常 ImportCardinalityMismatchException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18890651/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com