【发布时间】:2014-07-31 21:09:02
【问题描述】:
有人写了一个返回对象类型的方法。
public object GetProvider(double personId)
{
// Some other code here
return new {
FirstName = Convert.ToString(reader["FirstName"]),
LastName = Convert.ToString(reader["LastName"])
};
}
在不同的代码部分,我们使用这个库方法。
var d = GetProvider(123);
string fName = d.GetType().GetProperty("FirstName").GetValue(d, null).ToString();
如何改进或简化此代码?我猜他们应该创建一个类并返回它的一个对象而不是对象类型。此外,我还看到在 C#4 中使用 dynamic 的代码。我试过了,但它不适用于对象类型。有什么想法吗?
【问题讨论】:
-
dynamic怎么不起作用? -
@Jashaszun:
d被输入为System.Object,它没有FirstName属性。 -
“改进或简化此代码”——听起来像是 Code Review 的完美候选者
-
这里正确的解决方案是不从方法返回匿名类型。使用命名类型。
-
这不是一个坏问题。如您所见,作者必须使用其他人编写的方法。这可能存在于另一个程序集中,并且不允许他更改它。我不明白为什么动态不起作用。你能解释一下吗?
标签: c# c#-4.0 anonymous-types