Blazor 命名范围依赖注入

问题描述

在构造函数中创建命名范围实例适用于 Blazor 和 WPF。但是使用 IResolutionRoot 创建实例仅适用于 WPF。在示例代码中 WPF 完美运行,Guid 属性确认命名范围被正确考虑。在 blazor ResolutionRoot.Get 中抛出异常,表示“当前上下文中不知道范围 ccc”。有没有其他人经历过这种情况?可能有解决方法还是这是一个 ninject 错误

我已经定义了范围:

            Bind<ICCC>().To<CCC>().DefinesNamedScope("ccc");
            Bind<IBBB>().To<BBB>().InNamedScope("ccc");
            Bind<IAAA>().To<AAA>().InNamedScope("ccc");


            var ccc = Creator.Get<ICCC>();
            ccc.CreateAAA();

课程:

public class AAA : IAAA
{
    public Guid Guid { get; } = Guid.NewGuid();
}

public interface IAAA
{
    Guid Guid { get; }
}

public class BBB : IBBB
{
    public BBB(IAAA aaa)
    {
        Aaa = aaa;
    }

    public Guid Guid { get; } = Guid.NewGuid();
    public IAAA Aaa { get; }
}

public interface IBBB
{
    IAAA Aaa { get; }

    Guid Guid { get; }
}


public class CCC : ICCC
{
    public CCC(IBBB bbb,IAAA aaa,IResolutionRoot resolutionRoot)
    {
        Bbb = bbb;
        Aaa = aaa;
        ResolutionRoot = resolutionRoot;

        Aaa3 = ResolutionRoot.Get<IAAA>();
    }

    public Guid Guid { get; } = Guid.NewGuid();
    public IBBB Bbb { get; }
    public IAAA Aaa { get; }
    public IAAA Aaa2 { get; set; }
    public IAAA Aaa3 { get; set; }
    public IResolutionRoot ResolutionRoot { get; }

    public void CreateAAA()
    {
        Aaa2 = ResolutionRoot.Get<IAAA>();
    }
}

public interface ICCC
{
    IAAA Aaa { get; }

    IAAA Aaa2 { get; }

    IAAA Aaa3 { get; }

    IBBB Bbb { get; }

    Guid Guid { get; }

    void CreateAAA();
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)