2016-07-29 3 views
-1

ich die folgenden Klassen habe ...Ist es möglich, die folgenden Klassen zu einer einzigen generischen Klasse zusammenzufassen?

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})"; 
} 

Gibt es etwas, das ich mit LINQ oder generischen Variablen tun kann (zB T) das diese beiden Klassen zu einer einzigen Klasse kombinieren könnte?

Ich möchte, dies zu tun, weil es weitere Klassen auf der ganzen Linie sein kann meines Projekts, die Änderungen an das Format dieser Klassen erfordern (z. B. jede Klasse hat einen Brief und einen Wert zu einem bestimmten entsprechenden Situation)

Antwort

0

Ja, man könnte dies mit Generika:

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

diese nicht kompiliert. – Enigmativity

+0

@Enigmatismus Es sollte jetzt kompilieren. – TheAuzzieJesus

+0

@TheAuzzieJesus - Sie sollten Robert seine eigene Antwort reparieren lassen. – Enigmativity

Verwandte Themen