내 설계가 잘못되어 내 문제를 해결하는 방법을 묻습니다. 팩토리 메서드의 생성자에 대한 제약 조건 유형
그래서 내 경우 : 나는 클래스 공장 방법을 쓰고 있어요는, 마녀는 나의 특별한 기본 클래스에서 파생되었다. 그래서 내가 썼다
public T MyFactory<T>() where T:MyBaseClass
그러나 내 공장 방법의 주요 작품은 몇 가지 특별한 매개 변수를 받고 새로운 개체의 생성자로 전달하고있다. MyBaseClass
이 생성자가 있습니다
public MyBaseClass(MySpecParam param){...}
을하지만이 MyBaseClass
에서 파생 된 T
을 입력 보장은 없다 같은 생성자를 가지고있다.
내가 볼 수있는 유일한 솔루션은 공장 안전하게 유형 T
의 새로운 객체를 만든 다음 MySpecParam
객체로 init을 할 수 있도록, MyBaseClass
에 new()
제약 및 가상 Init
방법을 추가하는 것입니다.
그러나 은 그러한 디자인이므로, MySpecParam
으로 의견을 제시하지 않으면 완전히 사용할 수 없습니다. 그리고 사용자는 매개 변수없는 생성자를 사용하여 MyBaseClass
을 생성하고 초기화되지 않은 객체를 완전히 무효화 할 수 있습니다. 나는 그것이 좋지 않다고 생각한다.
new(MySpecParam)
제약을 추가 할 방법이 없습니다.
개체, 생성자 및 팩토리 메서드를 어떻게 디자인해야합니까?
인터페이스 할 수 없습니다 containts 생성자 – Yavanosta