我有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#让我将皱纹和sc脚当作IAnimal对待,而无需在编写类时编写:IAnimal。

谢谢!

编辑(不是惰性的):这些类是根据sql存储的proc元数据生成的,这意味着每次生成该类时,我都必须返回并添加它们,或者修改代码生成器以标识接口中的成员,其实那不是一个坏主意。我希望有某种通用方法或某种方法。

最佳答案

您可以使用部分类来解决此问题:让机器生成/重新生成的代码位于每个类的一个源文件中,而手工编码的部分(定义IAnimal的子类)位于另一个源文件中。

10-06 01:34