8

プロパティとして名前と生年月日を持つ個人の匿名型を作成したとします。

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ましたがもちろんダメでした。

4

1 に答える 1

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:

    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();
于 2013-07-19T09:16:31.307 に答える