Dependency injection 为什么要在两个相等的设置结构映射代码路径中获得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时扫描它们,提供共享接

在C语言中,使用StructureMap 2.5.4,目标是.NET Framework 3.5库

我已经采取步骤,使用ServiceLocator模型和引导程序激活,在结构映射DI设置中支持多个概要文件。第一个安装程序是使用扫描仪加载默认注册表

现在我想确定运行时我喜欢使用什么注册表配置。扫描和加载多个具有注册表的程序集

看起来它对实际实现不起作用(获取202,未找到默认实例),但剥离测试版本确实起作用。下面的设置

  • 包含注册表和实现的两个程序集
  • 在运行AppDomain时扫描它们,提供共享接口,并使用构造函数中的接口请求创建实例(调用时,这些接口会被处理到配置文件中)
下面的工作代码示例(与其他设置的结构相同,但包含更复杂的内容,这是一个202):

202可以使用哪种类型的Couse,特别是命名System.Uri类型,而不是默认类型的句柄??(uri毫无意义)


热爱社区工作。

错误代码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);