working with unity tag script not collider check c# .net inversion-of-control unity-container

c# - with - tag unity



Registrar automáticamente todas las interfaces con Unity (4)

La unidad no tiene soporte para convenciones. Pero el proyecto TecX en codeplex contiene un motor de configuración mejorado para Unity que se basa en la configuración de StructureMap.

Usando Unity, me gustaría registrar automáticamente todas las combinaciones de interfaz / clase en un ensamblaje basado en la siguiente convención:

INameOfObject > NameOfObject

StructureMap hace eso cuando las convenciones predeterminadas están habilitadas.

Escribí el siguiente método para ello:

private static IUnityContainer RegisterITypesOf(this IUnityContainer container, string assemblyName) { Assembly.Load(assemblyName) .GetTypes() .Where(t => t.GetInterfaces().Any(i => i.Name == "I" + t.Name)) .ForEach(t => container.RegisterType(t.GetInterface("I" + t.Name, false), t)); return container; }

Mi pregunta es:

  • ¿Hay una función incorporada que hace lo mismo?
  • Si no, ¿puede mejorarse mi código en cuanto al rendimiento?


Unity 3.5.140.0 ha incorporado una funcionalidad para registrar interfaces con nombres similares a la clase que lo usa.

public static void RegisterTypes(IUnityContainer container) { container.RegisterTypes( AllClasses.FromLoadedAssemblies(), WithMappings.FromMatchingInterface, WithName.Default); }


Yo quería lo mismo que tú; configuración basada en convenciones para Structuremap, y siguió adelante y creó una biblioteca para ello. Puede descargarlo en NuGet y leer algunos documentos en mi página de github

¡Espero que esto ayude!