首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用DryIoc扫描程序集

使用DryIoc扫描程序集
EN

Stack Overflow用户
提问于 2021-11-04 21:25:18
回答 2查看 27关注 0票数 2

我正在尝试使用DryIoc Mef库来扫描具有导出属性的所有程序集

我看到了关于Mef与DryIoc的链接

我将方法更改为RegisterExports,但是没有注入IGreeter属性。如果我自己注册每一个,它就能工作(Foo/Greeter)。

代码语言:javascript
复制
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()}");
    }
}

}

EN

回答 2

Stack Overflow用户

发布于 2021-11-04 22:20:11

所需的接口IGreeter属性

代码语言:javascript
复制
[InheritedExport]    
public interface IGreeter
{
    string ShowGreet();
}
票数 0
EN

Stack Overflow用户

发布于 2021-11-05 08:32:38

答案是更改ExportEx(typeof(IGreeter))ExportMany。后者将发现已实现的接口并将其导出。还要注意类型的可见性-默认情况下,ExportMany不会导出非公共类型,但可以使用属性属性进行更改。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69846012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档