有什么可用来确定类型是否实际上是匿名类型的东西吗?例如界面等?
目标是创建类似于以下内容的内容…
//defined like... public static T Get<T>(this IAnonymous obj, string prop) { return (T)obj.GetType().GetProperty(prop).GetValue(obj, null); } //... //And then used like... var something = new { name = "John", age = 25 }; int age = something.Get<int>("age");
还是仅仅是匿名类型的美?没有什么可以自我识别的,因为它采用了新的形状?
注意 -我意识到您可以为 对象 类编写扩展方法,但是在我看来,这似乎有点过头了。
编辑:下面的列表适用于C#匿名类型。VB.NET具有不同的规则- 特别是,它可以生成可变的匿名类型(默认情况下会生成)。贾里德(Jared)在评论中指出,命名方式也有所不同。基本上,这一切都很脆弱…
您无法在一般约束中识别它,但是:
object
但是,规范对此几乎没有保证-因此在下一版本的编译器中,或者如果您使用Mono等,都可能会更改。