-4

オブジェクトに存在するすべての日時タイプを取得するにはどうすればよいですか?

EG出荷オブジェクトには、荷送人、荷受人の名前など、出荷に関するすべての詳細が含まれます。また、受領日、輸送日、配達日などの多くの日時フィールドも含まれます。

出荷オブジェクトのすべての日付フィールドを取得するにはどうすればよいですか?

4

2 に答える 2

1

最も簡単な方法は、プロパティに直接アクセスすることです。

var receivedDate = shipment.ReceivedDate;
var transportedDate = shipment.DeliveryDate;
...

別のアプローチは、Shipmentオブジェクトにリストを返すようにすることです。

public Dictionary<string, DateTime> Dates
{
    get
    {
        return new Dictionary<string, DateTime>()
        {
            new KeyValuePair<string, DateTime>("ReceivedDate", ReceivedDate),
            new KeyValuePair<string, DateTime>("DeliveryDate", DeliveryDate),
            ...
        }
    }
}

...
foreach (var d in shipment.Dates)
{
    Console.WriteLine(d.Key, d.Value);
}

または最後に、Reflection を使用してプロパティを反復処理します。

public Dictionary<string, DateTime> Dates
{
    get
    {
        return from p in this.GetType().GetProperties()
               where p.PropertyType == typeof(DateTime)
               select new KeyValuePair<string, DateTime>(p.Name, (DateTime)p.GetValue(this, null));
    }
}
于 2012-10-01T08:11:41.563 に答える
0

反射を使用できます。

    Type myClassType = typeof(MyClass); // or object.GetType()
    var dateTimeProperties = from property in myClassType.GetProperties()
                             where property.PropertyType == typeof(DateTime)
                             select property;

.net でのリフレクションの詳細については、 http://msdn.microsoft.com/en-us/library/system.reflection.propertyinfo.aspx
http://msdn.microsoft.com/en-us/library/system.reflectionを参照してください
。 .fieldinfo.aspx

于 2012-10-01T08:03:56.433 に答える