当前位置:  开发笔记 > 编程语言 > 正文

将类看作是用接口定义的

如何解决《将类看作是用接口定义的》经验,为你挑选了2个好方法。

我有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元数据生成的,这意味着每次生成它时我都必须返回并添加它们,或者修改代码生成器以识别接口中的成员,实际上这不是一个坏主意.我希望有某种泛型方法或者某种东西.



1> Jack Ryan..:

您要求的是鸭子打字,而不是C#的一部分我害怕.任何解决方案都将涉及反思和查看属性,我认为手动检查类会更快.

尽管如此,这将是一个有趣的项目.



2> ChrisW..:

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

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有