çalışması gerektiğini düşünüyorum Bana ihtiyacım olan şeyi ver. AddAllTypesOf, tüm beton türlerini IRepositoryInterface'e karşı kaydetmiştir, ancak bunun yerine, her beton tipinin, arabirime karşı, adsız olarak adlandırma ile kaydedilmesini talep ediyorum. ie. Ayrıca, test depoları için bazı adlandırılmış örnekler oluşturmam gerekiyor.
For<IMyRepository>().Use<TestMyRepository>().Named("Test");
İşte buna ihtiyacım olarak çalışmaya göründüğü ile geldi budur.
public class SqlRepositoryConvention : StructureMap.Graph.IRegistrationConvention
{
public void Process(Type type, Registry registry)
{
// only interested in non abstract concrete types that have a matching named interface and start with Sql
if (type.IsAbstract || !type.IsClass || type.GetInterface(type.Name.Replace("Sql", "I")) == null)
return;
// Get interface and register (can use AddType overload method to create named types
Type interfaceType = type.GetInterface(type.Name.Replace("Sql","I"));
registry.AddType(interfaceType, type);
}
}
Ve uygulanan
Scan(cfg =>
{
cfg.TheCallingAssembly();
cfg.Convention<SqlRepositoryConvention>();
});
Tam olarak ihtiyacım olan şey, teşekkürler –