ISelector
의 구체적인 구현을 반환하는 GetSelector
함수가있는 팩토리 클래스가 있습니다. 나는 ISelector를 구현하고 적절한 ISelector
을 받고 싶은 설정을 기반으로 여러 클래스를 가지고있다.C#/ASP.NET MVC 4 팩토리에서 인터페이스에서 파생 된 객체 인스턴스화
public interface ISelector
{
string GetValue(string Params);
}
public class XmlSelector : ISelector
{
public string GetValue(string Params)
{
// open XML file and get value
}
}
public static class SelectorFactory
{
public static ISelector GetSelector()
{
return new XmlSelector(); // Needs changing to look at settings
}
}
제 질문은 설정을 저장하는 가장 좋은 방법은 무엇입니까? 나는 AppSettings 등을 사용하는 것을 알고 있지만 web.config에 문자열을 저장하고 스위치를 수행해야하는지 여부를 확신하지 못합니다. 단지 ISelector의 새 구현이 만들어지면 공장을 바꿔야 할 것입니다. 어셈블리 이름을 저장하고이를 기반으로 인스턴스화하는 방법이 있습니까?
감사합니다,
크리스
감사합니다. @levib 그러나 내 공장 및 관련 클래스/인터페이스는 이미 클래스 라이브러리로 추출되었습니다. XML 공급자에서 데이터베이스 공급자로 전환 할 수있는 간단한 방법이 필요합니다. 추가 ISelector의 유연성을 유지하면서 작성해야합니다. – Chris
어떻게 전환해야합니까? 클라이언트가 구성 할 수있는 것이거나 코드 자체에서 수행 할 수있는 것입니까? (나는 당신이 미래 수업을 쓸 가능성을 언급하면서 후자를 가정하고있다.) –
예, 코드 기반이 될 것입니다. 나는 다른 개발자를위한 코드 라이브러리를 공개하고 있지만, 필요에 따라 DB, XML 또는 기타 지속성 방법을 사용해야 할 수도 있습니다. 변경하기 쉽도록 만들고 싶습니다. (구현 여러 곳에서 참조 될 것입니다.) 모든 코드를 살펴보고 구체적인 구현을 변경하지 않아도됩니다! – Chris