问题描述
在构造函数中创建命名范围实例适用于 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 (将#修改为@)