본질적으로 일반적인 클래스와 메서드를 만들 때 문제가 발생했습니다.일반 추상 메서드
class GameRoomManager : MonoBehaviour {
public GameRoom GetSomething(string s){
//do things here
return GameRoomvar;
}
}
는 지금은 비슷한 무언가를 다른 클래스를 가지고 있지만, 다른 클래스는
class PlayerManager : MonoBehaviour{
public Player GetSomething(string s){
//player related things here
return Playervar;
}
}
내가 GameRoomManager과 PlayerManager는 추상 클래스 복근
class GameRoomManager : Abs{
public override GameRoom GetSomething<GameRoom>(string s){
return GameRoomvar;
}
}
에서 상속 두 클래스를 갖고 싶어 참여 where
public abstract class Abs{
public T GetSomething<T>(string s);
}
솔루션을 찾고있을 때이 주제에 대해 몇 가지 답변을 보았습니다. 모두 추상 클래스 자체가 포괄적이라고 제안했습니다. 내가 본 예제는 내가 할 것이기 때문에 추상적 클래스를 generic으로 만들고 싶지 않다. class GameRoomManager : Abs<GameRoomManager>
. 하지만 GameRoomManager가 아닌 GameRoom 유형을 반환하는 방법을 원합니다. 내가 잘못
'그러나 나는 방법을 원하는 XYZ가 아닌 PQR 타입을 반환한다. 그래서'PQR'을 generic으로 만든다. 논의. generic 인자가 타입 자체 일 필요가있는 이유는 무엇입니까? – Servy
예, 이것에 대해 생각해 보았습니다. 그러나이 예제는 T를 반환하는 메서드의 한 유형에 대한 것입니다. 이제 U 유형을 반환하는 다른 메서드가 있으면 어떻게됩니까? 나는'GG'을 만들어야 할 것이다. 그것은 나에게 꽤 어리 석다. 물론 추상적 인 수업을 만들지는 않을 것입니다. 아니면 또 다른 이유가 있습니까, 아니면 더 나은 설명이 왜 당신이 말하는 방식으로해야합니까? –
Shraa1
추상 클래스가 필요하지 않은 경우 추상 클래스를 만들지 마십시오. 주어진 메소드가 없다는 것을 감안할 때, 실제로는 추상 클래스가 아니라 인터페이스 여야합니다. 그렇더라도 인터페이스가 필요하지 않다면 인터페이스를 생성하지 마십시오. 필요하다면 사용하십시오. – Servy