이라는 템플릿 클래스에 바인딩 될 때 함수를 동적으로 바인딩하는 경우 세 가지 다른 유형 A, B 및 C에서만 인스턴스화 될 템플릿 클래스가 있으므로 다른 클래스에 외부 함수 호출을 바인딩 할 수있는 방법이 있습니다. 서식 파일이 형식에 바인딩 될 때 서식 파일 형식?C# : 템플릿이
class template<T> {
private printer myPrinter;
Print(T obj) {myPrinter.Print(obj);
}
class printer {
public Print(A obj){};
public Print(B obj){};
public Print(C obj){};
}
이제 위의 내용을 이해할 수 없습니다. 다음 세 가지 클래스 대신 코드를 세 번 갖는 템플릿 (작성
1)의 선택 및 컴파일시 정적 바인딩 호출) 나에게 잎
. 인쇄 기능을 호출하는 기능을 동적 해상도 런타임의 객체 A, B 및 C, 및
class template<T> where T : IPrintable {
private printer myPrinter;
Print(T obj) {obj.Print());
}
하지만이 이어질 것이다의 템플릿 변경에 포함되도록 설계 변경
2) 필자의 경우와 같이 바람직하지 않은 디자인에서는 Print 함수가 더 논리적으로 프린터에 더 많이 포함됩니다. 이 라인을 따라 동적 키워드, 뭔가를 사용
3) :
class template<T> {
private printer myPrinter;
Print(T obj) {myPrinter.Print((dynamic)obj);
}
의 I는 상상 각 함수 호출에 일어날 여기에 바인딩.
그래서 저는 실제로 두 가지를 제거하는 프린터 클래스의 기능을 유지하고 코드를 여러 번 사용하지 않고 (1 개를 제거함) 모든 기능이 아닌 인쇄 기능을 동적으로 바인드하는 솔루션을 찾고 있습니다. 호출하지만 템플릿 초기화시 (3 제외).
기본적으로 템플릿을 만들 자마자 런타임 환경은 모든 호출에서 호출 할 함수를 알아야하며 함수가 호출 될 때마다 조회를 수행하지 않아도됩니다.
제 질문은 위와 같이 정확하게 생각합니까? 그리고 템플릿이 템플릿 유형에 바인딩 될 때 동적으로 바인드하는 방법이나 위에 설명 된 더 좋은 방법이 있습니까? 그리고 동적 클래스 대 다중 클래스를 사용하는 데 따른 오버 헤드는 무엇입니까?
감사 클래스 printer
일반적인 방법
@codymanix 그는 자신의 클래스 템플릿의 이름을 지정하는 것 같습니다. @ 쿠키 : 클래스에는 대문자를 사용하는 것이 좋습니다. – LueTm