C# 匿名类型声明
我有一个静态类,其方法使用 linq 并返回一个对象。我的编译器不想编译它,因为他需要对象的定义。你能告诉我我有哪些意见来定义这个对象吗?
我寻找一个微小的解决方案,我不想为它创建一个额外的类(如果不需要?)
public static object GetWaveAnimation()
{
return (from element in configurations.Elements("Animation")
where element.Attribute("NAME").Value == "Wave"
select new
{
time = element.Attribute("TIMING").Value,
enable = element.Attribute("ENABLED").Value
}).FirstOrDefault();
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您想要一个静态类型(和命名)的解决方案,您应该创建一个单独的类。
有一些巧妙的方法可以避免它,但总的来说这不是一个好主意。
如果您使用的是 .NET 4,另一种选择是返回 IEnumerable>。这样您就会丢失“时间”和“启用”名称,但请记住这是一对字符串。
If you want a statically typed (and named) solution, you should create a separate class.
There are some hacky ways of avoiding it, but it's not a good idea in general.
Another option is to return
IEnumerable<Tuple<string, string>>
if you're using .NET 4. That way you lose the "time" and "enabled" names, but keep the idea that it's a pair of strings.另一个解决方案:C# 的隐藏功能?
another solution: Hidden Features of C#?
对于 .net 3.5 来说,咬紧牙关,它是看起来最干净的解决方案。
对于 .net 4.0,您可以使用动态关键字(但您无法从程序集或友元程序集外部调用此方法,因为匿名类型是内部的。)
OR 您有元组选项
For .net 3.5 just bite the bullet it's the cleanest looking solution.
For .net 4.0 you can use dynamic keyword (but you can't call this method from outside your assembly or friend assemblies because anonymous types are internal.)
OR you have the Tuple Option