如何解决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 举报,一经查实,本站将立刻删除。