0

ninject我有这样的代码:C#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做到这一点?

回答

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>(); 
1

作为错误消息指出,这样的:

.Use<ResourceStringProvider>

应该是:

.Use<ResourceStringProvider>()

因为它是一种方法。