我正在尝试使用 DryIoc Mef 库来扫描所有具有导出属性的程序集
我看到这个关于Mef和 DryIoc 的链接
我将方法更改为 RegisterExports,但没有注入 IGreeter 属性。如果我自己注册每一个,它就可以工作(Foo/Greeter)。
using DryIoc;
using DryIoc.MefAttributedModel;
using System;
using DryIocAttributes;
namespace ConsoleApp3
{
class Program
{
public static IContainer C;
static void Main(string[] args)
{
Program.C = new Container().With(rules => rules.With( propertiesAndFields: PropertiesAndFields.Auto)).WithMefAttributedModel();
Program.C.RegisterExports(new Assembly[] { typeof(Foo).GetAssembly() });
var foo = new Foo();
foo.Message();
Console.ReadLine();
}
}
public interface IGreeter
{
string ShowGreet();
}
[ExportEx]
public class Greeter : IGreeter
{
public Greeter() { }
public string ShowGreet()
{
return "Hello World";
}
}
[ExportEx]
public class Foo
{
public IGreeter greet { get; set; }
public void Message()
{
Program.C.InjectPropertiesAndFields(this);
Console.WriteLine($"Show {greet.ShowGreet()}");
}
}
}