sgt*_*gtz 19 c# interface anonymous-types
这似乎不可能吗?那么什么是最好的解决方案?展开/动态?
public interface ICoOrd {
int x { get; set; }
int y { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
...
ICoOrd a = new {x = 44, y = 55};
Run Code Online (Sandbox Code Playgroud)
参考:
Ani*_*Ani 28
最好的"解决方法"是创建和使用实现接口的普通"命名"类型.
但是如果你坚持使用匿名类型,可以考虑使用动态接口代理框架ImpromptuInterface.
var myInterface = new { x = 44, y = 55 }.ActLike<ICoOrd>();
Run Code Online (Sandbox Code Playgroud)
不,匿名类型永远不会实现接口.dynamic不会让你投的接口下去,但将让你刚刚访问两个属性.请注意,匿名类型是internal,所以如果要在使用的程序集中使用它们dynamic,则需要使用InternalsVisibleTo.