Dependency injection 为什么要在两个相等的设置结构映射代码路径中获得202
在C语言中,使用StructureMap 2.5.4,目标是.NET Framework 3.5库 我已经采取步骤,使用ServiceLocator模型和引导程序激活,在结构映射DI设置中支持多个概要文件。第一个安装程序是使用扫描仪加载默认注册表 现在我想确定运行时我喜欢使用什么注册表配置。扫描和加载多个具有注册表的程序集 看起来它对实际实现不起作用(获取202,未找到默认实例),但剥离测试版本确实起作用。下面的设置Dependency injection 为什么要在两个相等的设置结构映射代码路径中获得202,dependency-injection,structuremap,ioc-container,Dependency Injection,Structuremap,Ioc Container,在C语言中,使用StructureMap 2.5.4,目标是.NET Framework 3.5库 我已经采取步骤,使用ServiceLocator模型和引导程序激活,在结构映射DI设置中支持多个概要文件。第一个安装程序是使用扫描仪加载默认注册表 现在我想确定运行时我喜欢使用什么注册表配置。扫描和加载多个具有注册表的程序集 看起来它对实际实现不起作用(获取202,未找到默认实例),但剥离测试版本确实起作用。下面的设置 包含注册表和实现的两个程序集 在运行AppDomain时扫描它们,提供共享接
- 包含注册表和实现的两个程序集
- 在运行AppDomain时扫描它们,提供共享接口,并使用构造函数中的接口请求创建实例(调用时,这些接口会被处理到配置文件中)
热爱社区工作。错误代码202表示无法为请求的类型生成默认实例。您的测试代码显然不等于失败的实际代码。如果您得到一个关于Uri的错误,那么您可能有一个依赖项,该依赖项需要在其构造函数中包含Uri。它可能不是您要求的类-它可能是该类的一个依赖项-或一个依赖项。。。在下面的某个地方,有人要求StructureMap解析Uri,如果没有您的帮助,它无法解析Uri。似乎缺少一个接口,无法传递给顶级接口之一。定义地保存Uri属性类型。谢谢你让我重回正轨!
// let structure map create instance of class tester, that provides the registered
// interfaces in the registries to the constructor of tester.
public class Tester<TPOCO>
{
private ITestMe<TPOCO> _tester;
public Tester(ITestMe<TPOCO> some)
{
_tester = some;
}
public string Exec()
{
return _tester.Execute();
}
}
public static class Main {
public void ExecuteDIFunction() {
ObjectFactory.GetInstance<Tester<string>>().Exec();
}
}
public class ImplementedTestMe<TSome> : ITestMe<TSome>
{
public string Execute()
{
return "Special Execution";
}
}
public class RegistryForSpecial : Registry
{
public RegistryForSpecial()
{
CreateProfile("Special",
gc =>
{
gc.For(typeof(ITestMe<>)).UseConcreteType(typeof(ImplementedTestMe<>));
});
}
}
x.ForRequestedType<IConnectionContext>()
.TheDefault.Is.Object(new WebServiceConnection());
ObjectFactory.Inject(typeof(IConnectionContext), context);