Anonymous class implementing interface
本问题已经有最佳答案,请猛点这里访问。
我在一个方法中有以下代码:
1 2 3 4 5 6 |
我想调用一个函数,该函数需要一个元素列表,其中每个元素实现一个接口(iselectable)。我知道如何在普通类中完成这一点,但在本例中,我只想填充一些演示数据。
是否可以创建实现接口的匿名类?
这样地:
1 |
号
开放源码框架即兴接口将允许您通过轻量级代理和DLR有效地完成这一任务。
1 |
号
不,这是不可能的。
匿名类型应该是内部的轻量级传输对象。当您需要比小语法提供更多的功能时,您必须将其实现为一个普通的命名类型。
继承和接口实现、属性、方法、带代码的属性等不可能实现。
即使您可以这样做,您几乎肯定也不想这样做,因为一个方法将了解匿名类的所有信息(即,没有封装,也没有间接访问的好处)。
另一方面,我已经考虑了这样一个特性的外观(如果我想将一个匿名类型的对象传递给一个需要特定接口的方法,这可能很有用……我想是这样)。
继承接口ifoo的匿名类型的最基本语法如下
1 2 3 4 5 |
但这是一个简单的例子,其中ifoo只有一个属性或方法。通常,您必须实现ifoo的所有成员;包括读/写属性和事件,这些属性和事件目前在匿名类型的对象上甚至不可能实现。