나는 싱글 톤인 몇 가지 클래스를 가지고 있으므로 GetInstance (params) 메서드와 파생 클래스가있는 부모 BaseClass를 만들고이 메서드를 구현하고 theiselfs의 인스턴스를 반환해야합니다. 그들을 캐스팅하기 위해) ... 그들은 싱글 톤이므로 메서드는 정적이어야하지만 정적 메서드를 재정의 할 수는 없습니다. 코드를 작성하는 최선의 방법은 무엇입니까? 내가 원하는 것을 샘플 코드 : 내가자손의 싱글 톤 인스턴스를 반환합니다.
Derived.GetInstance().SomeDerivedMethod()
을 호출 할이 외부 코드에서
public class Base {
public static virtual T GetInstance<T>() where T : class;
}
public class Derived {
Derived instance;
public static override T GetInstance<T>() where T : typeOf(this){
if (instance == null) {
instance = new Derived();
}
return instance;
}
}
하지
(Derived.GetInstance() as Derived).SomeDerivedMethod() and not
new Derived().getInstance().SomeDerivedMethod()
나는이 좋지 않아 알고, 내가 부족이 T 타입에 대한 경험도 있으므로 어떤 조언도 환영합니다. 감사
편집 :
또는 가능한 경우 든 파생 클래스를 ovwerride 필요하지 않도록, 자료의 getInstance() 메소드를 정의하지만,이 곳에서 클래스의 인스턴스를 반환합니다 그것은 ... Derived라고합니다 .GetInstance()는 Derived의 인스턴스를 반환합니다.
이 클래스가 어떤 목적을해야합니까? IoC 컨테이너가 더 적합 할 수 있습니다. – Groo
나는 더 많은 싱글 톤을 가질 것이므로, 부모로부터의 정적 상속 된 메소드가 항상 그것이 호출 된 곳의 타입의 인스턴스를 반환 할 수있는 방법으로 인스턴스를 생성하기위한 논리를 풀고 싶다. (자손 이어도) – Zavael
여기있다. 비슷한 토론 http://www.codeguru.com/forum/showthread.php?t=376943 그리고 그것은 자손을 싱글 톤으로 강제 할 수있는 방법이없는 것처럼 보입니다. 나는 이상한 것을 원했던 것처럼 보입니다. :( – Zavael