如何在C#中通过单个接口将多个基类连接到多个子类?

如何在C#中通过单个接口将多个基类连接到多个子类?,c#,inheritance,interface,subclass,C#,Inheritance,Interface,Subclass,我有三个类继承自一个更高的基类,我们称之为大写字母。其中有LetterA、LetterB和LetterC类。我希望构建一个接口,将它们分别连接到相应的子类LowerA、LowerB和LowerC。我有一个接口,它有一个单独的属性“UpperCaseLetter”,可以有效地存储或引用相应的大写字母。当我想在小写字母级别构造一个已知类型的对象时,这很好,因为我可以很容易地手动引用大写字母 我需要构建一个脚本,该脚本能够查看我现有的一组大写字母,并通过实现接口来构建相应的小写字母对象,这样我最终会得

我有三个类继承自一个更高的基类,我们称之为大写字母。其中有LetterA、LetterB和LetterC类。我希望构建一个接口,将它们分别连接到相应的子类LowerA、LowerB和LowerC。我有一个接口,它有一个单独的属性“UpperCaseLetter”,可以有效地存储或引用相应的大写字母。当我想在小写字母级别构造一个已知类型的对象时,这很好,因为我可以很容易地手动引用大写字母

我需要构建一个脚本,该脚本能够查看我现有的一组大写字母,并通过实现接口来构建相应的小写字母对象,这样我最终会得到一个小写字母对象,例如LowerA,它从引用它所连接的LetterA对象的接口实现属性

在C#中,通过循环迭代,当我遇到一个似乎没有匹配的LowerCaseLetter对象的项时,如何使用UpperCaseLetter子类(LetterA、LetterB或LetterC)中的类型信息来动态构造相应LowerCaseLetter子类的相应LowerCaseLetter对象(LowerA、LowerB或LowerC)而不静态列出每个字母大小写中可用的子类类型

提前谢谢

编辑:代码以演示我的意思:

class UpperCaseLetter {
public bool Italic
}

class LetterA : UpperCaseLetter {

}

class LetterB : UpperCaseLetter {

}

interface LowerCaseLetter {
    public UpperCaseLetter OriginalLetter;
}

class LowerA : LetterA, LowerCaseLetter { 

}

class LowerB : LetterB, LowerCaseLetter {

}


void BuildLowerCaseLetters {
    foreach (var upperLetter in setOfImaginaryBuiltLetterObjects){
        //below is how the code currently works, but any time I build a new pair of 
        //classes, say, LetterD and LowerD, this section needs to be modified. 
        //Looking for a dynamic solution
        if (upperLetter is LetterA){
            new LowerA();
        } else if (upperLetter is LetterB){
            new LowerB();
        } 
    }   

}

为什么不把大写字母和小写字母都当作接口,在接口上有一个方法在它们之间进行转换呢

public interface IUpperCaseLetter
{
    ILowerCaseLetter ToLowerCase();
}

public interface ILowerCaseLetter
{
    IUpperCaseLetter ToUpperCase();
}

public class UpperA : IUpperCaseLetter
{
    public ILowerCaseLetter ToLowerCase()
    {
        return new LowerA();
    }
}

public class LowerA : ILowerCaseLetter
{
    public IUpperCaseLetter ToUpperCase()
    {
        return new UpperA();
    }
}

foreach (var upperLetter in setOfImaginaryBuiltLetterObjects)
{
     var lowerLetter = upperLetter.ToLowerCase();
}
接口也可以继承其他接口,因此,如果您在大写和小写之间共享了某些内容,请创建一个共享接口

public interface ILetter
{
    bool Italic{ get; }
}

public interface IUpperCaseLetter : ILetter
{
    ILowerCaseLetter ToLowerCase();
}

public interface ILowerCaseLetter : ILetter
{
    IUpperCaseLetter ToUpperCase();
}

你能提供一些代码来证明这个问题不是学究式的,而是“连接”的吗在这个问题上是一个模棱两可的术语。类之间有各种各样的关联方式;请使用正确的方式,这样其他工程师就会知道你在说什么。如果你没有找到合适的词,也许你对这个问题考虑得不够。我建议,类与类之间没有继承关系n“大写字母”和“小写字母”,因为它们是互斥的,尽管它们可能都继承自简单的“字母”为什么要将
字母
小写
大写
分开?我相信您正在处理的实际代码是不同的,但是如果类非常紧凑,也许最好重新设计一个可以同时处理这两个类的类。