좋아요, 그 제목은 약간 불분명하지만, 그것을 설명하는 것 외에 다른 방법보다 더 좋은 방법을 생각할 수는 없습니다 ...상속 정적 메서드에서 클래스 컨텍스트를 검색 할 수 있습니까?
정적 인 일반적인 방법으로 Animal
클래스가 있다고 해봅시다.
public static T Create<T>() where T : Animal {
// stuff to create, initialize and return an animal of type T
}
그리고
Dog
,
Cat
,
Hamster
등등 서브 클래스가 있습니다.
Dog
을 얻으려면 다음과 같이 작성할 수 있습니다.
Dog d = Animal.Create<Dog>();
또는
Dog d = Dog.Create<Dog>();
이것은 실제로 똑같습니다. 하지만 Dog
서브 클래스를 통해 이미 정적 메서드를 호출하고 있으므로 Dog
를 여러 번 작성해야하는 것은 바보 같습니다.
기본 클래스에 Create()
메서드를 작성하는 영리한 방법을 생각하면 각 하위 클래스에 Create()
메서드를 작성하지 않고
Dog d = Dog.Create();
Cat c = Cat.Create();
Hamster h = Hamster.Create();
를 호출 할 수 있습니까?
'T'를 Animals로 제한하고 싶을 것입니다 :'class Animal T : Animal ' –
dtb
@dtb : 물론입니다! 응답이 업데이트되었습니다. –
Create() 내의 코드는 가상/추상 메서드를 호출하므로 파생 된 형식의 인스턴스를 만드는 방법입니다. –