2016-07-29 5 views
-1
나는 다음과 같은 수업을

...다음 클래스를 단일 제네릭 클래스로 결합 할 수 있습니까?

LetterScore.cs

public class LetterScore { 
    public char Letter; 
    public int Score; 

    public LetterScore(char c = ' ', int score = 0) { 
     Letter = c; 
     Score = score; 
    } 

    public override string ToString() => $"LETTER:{Letter}, SCORE:{Score}"; 
} 

LetterPoint.cs

public class LetterPoint { 
    public char Letter; 
    public Point Position; 

    public LetterPoint(char c = ' ', int row = 0, int col = 0) { 
     Letter = c; 
     Position = new Point(row, col); 
    } 

    public string PositionToString => $"(X:{Position.X}Y:{Position.Y})"; 
    public override string ToString() => $"(LETTER:{Letter}, POSITION:{PositionToString})"; 
} 

내가 LINQ 또는 일반 변수와 함께 할 수있는 일이 (거기에 예 : T)이 두 클래스를 하나의 클래스로 결합 할 수 있습니까?

나는 이러한 클래스의 형식 변경을 필요로 내 프로젝트의 라인 아래로 더 클래스가있을 수 있기 때문에이 작업을 수행 할 (예. 각 클래스는 문자와 특정에 해당하는 값을 가진다 상황은)

답변

0

예, 제네릭이 할 수 있습니다 :

public class Letter<T> 
{ 
    public char Letter {get;set;} 
    public T Item {get;set;} /*or make this protected and expose it in your derived class */ 
} 

public class LetterPoint : Letter<Point> 
{ 
    public LetterPoint(char c = ' ', int row = 0, int col = 0) 
    { 
     Letter = c; 
     Item = new Point(row, col); 
    } 

    public string PositionToString => $"(X:{Item.X}Y:{Item.Y})"; 
    public override string ToString() => $"(LETTER:{Letter}, POSITION:{PositionToString})"; 

} 

public class LetterScore : Letter<int> 
{ 

    public LetterScore(char c = ' ', int score = 0) 
    { 
     Letter = c; 
     Item = score; 
    } 

    public override string ToString() => $"LETTER:{Letter}, SCORE:{Item}"; 
} 
+0

이 컴파일되지 않습니다. – Enigmativity

+0

@Enigmativity 지금 컴파일해야합니다. – TheAuzzieJesus

+0

@TheAuzzieJesus - 로버트가 자신의 대답을 고쳐 주도록해야합니다. – Enigmativity

관련 문제