리포지토리 등록 전용 컨벤션을 만들 수 있습니다.
public class RepositoryConvention : IRegistrationConvention
{
private const string ConnectionString = "your connection string";
public void Process(Type type, Registry registry)
{
if (type.IsConcrete() && type.GetInterfaces().Contains(typeof(IRepository)))
{
registry.For(typeof(IRepository))
.Use(type)
.CtorDependency<string>("connectionString")
.Is(ConnectionString);
}
}
}
또는 연결 문자열을 제공하는 전용 유형을 만듭니다. 나는 당신이 web/app.config에서 그것을 얻고 있기 때문에 그것을 액세스하기위한 추상화를 추가하는 것이 도움이 될 것이라고 확신한다.
public interface IConfigurationSettingsReader
{
string ReadConnectionString(string name);
T ReadSetting<T>(string settingName);
}
그런 다음 당신은 당신의 MyRepository에 대한 종속성으로 추가하고 등록에 명시 적으로 추가하거나 사용자 지정 규칙을 사용할 필요가 없습니다.
public class MyRepository : IRepository
{
private readonly string connectionString;
public MyRepository(IConfigurationSettingsReader settingsReader)
{
this.connectionString = settingsReader.ReadConnectionString("ConnStrName");
}
}
설치 볼레 플레이트를 없애기 위해 각 저장소에서 상속 할 추상 기본 저장소 클래스를 만드는 것이 좋습니다.
희망이 도움이됩니다.