匿名类实现接口

fla*_*ayn 14 c# interface anonymous-class

我在方法中有以下代码:

 var list = new[]
  {
   new { Name = "Red", IsSelected = true },
   new { Name = "Green", IsSelected = false },
   new { Name = "Blue", IsSelected = false },
  };
Run Code Online (Sandbox Code Playgroud)

我想调用一个函数,它需要一个元素列表,每个元素实现一个接口(ISelectable).我知道如何使用普通类完成此操作,但在这种情况下,我只是尝试填写一些演示数据.

是否可以创建实现接口的匿名类?

像这样:

new { Name = "Red", IsSelected = true } : ISelectable
Run Code Online (Sandbox Code Playgroud)

ang*_*son 12

不,这是不可能的.

匿名类型在内部意味着是轻量级传输对象.您需要比小语法提供的功能更多的瞬间,您必须将其实现为普通的命名类型.

继承和接口实现,属性,方法,代码属性等等都是不可能的.


jbt*_*ule 12

开源框架即兴接口将允许您使用轻量级代理和DLR有效地执行此操作.

new { Name = "Red", IsSelected = true}.ActLike<ISelectable>();
Run Code Online (Sandbox Code Playgroud)