【问题标题】:C# Ninject to Structure map converterC# Ninject 到结构映射转换器
【发布时间】:2017-02-16 12:18:23
【问题描述】:

ninject 我有这样的代码:

var resourceManagers = new ResourceManager[1];
resourceManagers[0] = Validation.ResourceManager;
kernel.Bind<ILocalizedStringProvider>().To<ResourceStringProvider>()
    .WithConstructorArgument("resourceManager", resourceManagers);

kernel.Rebind<ModelValidatorProvider>().To<LocalizedModelValidatorProvider>();

我想把它转换成StructureMap

我是这样做的:

IContainer container = new Container();
var ioC = new IoC();
ioC.Initialize(container);

container.Configure(x =>
{

    var resourceManagers = new ResourceManager[1];
    resourceManagers[0] = ModelValidation.ResourceManager;
    x.For<ILocalizedStringProvider>().Use<ResourceStringProvider>.Ctor<string>(@"resourceManager").Is(resourceManagers);
    x.For<ModelValidatorProvider>().Add<LocalizedModelValidatorProvider>();
});

DependencyResolver.SetResolver(new StructureMapDependencyResolver(container));
GlobalConfiguration.Configuration.DependencyResolver = new StructureMapDependencyResolver(container);

但我得到了例外:

严重性代码描述项目文件行抑制状态 错误 CS0119 'CreatePluginFamilyExpression.Use()' 是一种方法,在给定的上下文中无效

如何使用StructureMap 做到这一点?

【问题讨论】:

    标签: c# dependency-injection ninject inversion-of-control structuremap


    【解决方案1】:

    使用 () 因为是方法

    var resourceManagers = new ResourceManager[1];
    resourceManagers[0] = ModelValidation.ResourceManager;
    
    x.For<ILocalizedStringProvider>().Use<ResourceStringProvider>().Ctor<ResourceManager[]> (@"resourceManager").Is(resourceManagers);
    x.For<ModelValidatorProvider>().Add<LocalizedModelValidatorProvider>();
    

    【讨论】:

      【解决方案2】:

      正如错误消息所说,这是:

      .Use&lt;ResourceStringProvider&gt;

      应该是:

      .Use&lt;ResourceStringProvider&gt;()

      因为它是一种方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-07-30
        • 2012-06-11
        • 1970-01-01
        • 2021-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-19
        相关资源
        最近更新 更多