0
최근에 Unity에서 Autofac으로 전환했으며 변환을 위해 MVC ModelMetadataFilters 종속성을 얻는데 어려움이 있습니다. 이 필터는 모든 인터페이스 IModelMetadataFilter
태그 된 후 여기에 생성자를 통해 주입해야합니다Unity/StructureMap 인터페이스 등록을 변경하십시오.
public ExtensibleModelMetadataProvider(IModelMetadataFilter[] metadataFilters)
{
_metadataFilters = metadataFilters;
}
나는 아래의 코드를 시도했습니다. ExtensibleModelMetadataProvider
이 등록되었지만 IModelMetadataFilter
클래스는 등록되지 않았습니다.
builder.RegisterType<ExtensibleModelMetadataProvider>()
.As<ModelMetadataProvider>()
.InstancePerLifetimeScope();
builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly())
.Where(t => t.IsAssignableFrom(typeof(IModelMetadataFilter)))
.AsImplementedInterfaces()
.InstancePerLifetimeScope();
내 단결 코드이었다
container.RegisterType<ModelMetadataProvider, ExtensibleModelMetadataProvider>();
container.RegisterTypes(
AllClasses.FromLoadedAssemblies().Where(type => typeof(IModelMetadataFilter).IsAssignableFrom(type)),
WithMappings.FromAllInterfaces,
WithName.TypeName,
WithLifetime.Transient);
나는 (StructureMap) 아래 매트 허니의 코드에서이 변환했다 :
For<ModelMetadataProvider>().Use<ExtensibleModelMetadataProvider>();
Scan(scan =>
{
scan.TheCallingAssembly();
scan.AddAllTypesOf<IModelMetadataFilter>();
});
Perfect! 감사. –