gpt4 book ai didi

c# - 将类视为使用接口(interface)定义的类

转载 作者:行者123 更新时间:2023-11-30 18:49:00 25 4
gpt4 key购买 nike

我有 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# 让我把褶边和邋遢当成 IAnimal 而不必在写类时写 : IAnimal。

谢谢!

编辑(不懒惰):这些类是根据 sql 存储过程元数据生成的,这意味着每次生成它时我都必须返回并添加它们,或者修改代码生成器以识别其中的成员界面,实际上这不是一个坏主意。我希望有某种泛型方法之类的。

最佳答案

你要求的是所谓的鸭子类型,恐怕不是 C# 的一部分。任何解决方案都将涉及反射和查看属性,我认为手动检查类会更快。

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

关于c# - 将类视为使用接口(interface)定义的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/470084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com