假设我为名字和出生日期为属性的人创建了一个匿名类型:
var person = new{ Name = "Mike", BirthDate = new DateTime(1990, 9, 2) };
然后,决定添加一个返回人的年龄的方法。
var person = new { Name = "Mike",
BirthDate = new DateTime(1990, 9, 2),
GetAge = new Func<int>(() => { return /* What? */; }) };
如何访问属性BirthDate
以便我可以计算年龄?我尝试使用this
,但当然没有用。
答案 0 :(得分:4)
你做不到。您必须创建一个Person
类才能具有此功能:
class Person {
public string Name { get; set; }
public DateTime BirthDate { get; set; }
public TimeSpan Age {
get {
// calculate Age
}
}
}
var person = new Person {
Name = "Mike",
BirthDate = new DateTime(1990, 9, 2))
};
修改:另一种选择是为DateTime
创建extension method:
public static TimeSpan GetAge(this DateTime date) {
// calculate Age
}
var person = new {
Name = "Mike",
BirthDate = new DateTime(1990, 9, 2))
};
TimeSpan age = person.BirthDate.GetAge();