我有100个类,有一些类似的元素和一些独特的.我创建了一个界面来命名那些相似的项目,例如:interface IAnimal.我通常做的是:
class dog : IAnimal
但是有100个课程,我不觉得他们全部都在寻找那些我可以应用IAnimal的课程.
我想要做的是:
dog scruffy = new dog(); cat ruffles = new cat(); IAnimal[] animals = new IAnimal[] {scruffy as IAnimal, ruffles as IAnimal} // gives null
要么
IAnimal[] animals = new IAnimal[] {(IAnimal)scruffy, (IAnimal)ruffles} //throws exception
然后做
foreach (IAnimal animal in animals) { animal.eat(); }
有没有办法让c#让我把ruffles和scruffy视为一个IAnimal而不必写:IAnimal在写这个类时.
谢谢!
编辑(不是懒惰):类是从sql存储的proc元数据生成的,这意味着每次生成它时我都必须返回并添加它们,或者修改代码生成器以识别接口中的成员,实际上这不是一个坏主意.我希望有某种泛型方法或者某种东西.
您要求的是鸭子打字,而不是C#的一部分我害怕.任何解决方案都将涉及反思和查看属性,我认为手动检查类会更快.
尽管如此,这将是一个有趣的项目.
您可以使用部分类来解决此问题:让机器生成/重新生成的代码放在每个类的一个源文件中,将手工编码的部分(从IAnimal定义子类)放在另一个类中.