C# 是否可以将以下类合并为一个泛型类?

C# 是否可以将以下类合并为一个泛型类?,c#,linq,generics,C#,Linq,Generics,我有以下课程 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() => $"LETT

我有以下课程

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}";
}
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})";
}
LetterPoint.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}";
}
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)将这两个类组合成一个类吗

我希望这样做,因为接下来可能会有更多的课程 需要对这些类的格式进行更改的项目 (例如,每个类都有一个字母和一个值,对应于特定的 (情况)


是的,您可以使用泛型执行此操作:

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}";
}
公开课信函
{
公共字符字母{get;set;}
公共T项{get;set;}/*或使其受保护并在派生类中公开*/
}
公共类信点:信
{
公共字母点(字符c='',整数行=0,整数列=0)
{
字母=c;
项目=新点(行、列);
}
公共字符串PositionToString=>$“(X:{Item.X}Y:{Item.Y})”;
公共重写字符串ToString()=>$“(字母:{LETTER},位置:{PositionToString})”;
}
公开课成绩:字母
{
公开信分数(字符c='',整数分数=0)
{
字母=c;
项目=得分;
}
公共重写字符串ToString()=>$“字母:{LETTER},分数:{Item}”;
}

这没有编译。@Enigmativity现在应该编译。@TheAuzzieJesus-你应该让Robert自己修改答案。@TheAuzzieJesus-或者你可以将编译代码作为自己的答案发布,但仍然将Robert的答案标记为正确答案。@Enigmativity我下次一定会这么做。