1

タスクのステータスの列挙があります。一部のステータスは廃止されたと見なされており、以下に示すように廃止されたものとしてマークしました。

public enum TaskStatus
{
    [Description("")]
    NotSet = 0,
    Pending = 1,
    Ready = 2,
    Open = 3,
    Completed = 4,
    Closed = 5,
    [Description("On Hold")][Obsolete]
    OnHold = 6,
    [Obsolete]
    Canceled = 7
}

私のユーザー インターフェイスでは、ドロップ ダウンに列挙の値を入力しますが、古いものとしてマークされているものは無視したいと考えています。どうすればこれを行うことができますか?

4

3 に答える 3

3

LINQクエリを作成できます。

var availableTaks = typeof (TaskStatus).GetFields(BindingFlags.Static | BindingFlags.GetField | BindingFlags.Public)
    .Where(f => f.GetCustomAttributes(typeof (ObsoleteAttribute), false).Length == 0);
foreach(var task in availableTaks)
    Console.WriteLine(task);
于 2009-01-10T01:32:02.180 に答える
1
Type enumType = typeof(testEnum);
enumType.GetFields(BindingFlags.Static | BindingFlags.GetField | BindingFlags.Public)[i].GetCustomAttributes(true);

次に、選択したメソッドを使用して配列をループし、カスタム属性があるかどうかを確認できます。

于 2009-01-10T01:41:13.270 に答える
0

DebuggerHiddenAttributeを使用できます。プロパティ エクスプローラーから非表示にするものがあることは知っていますが、名前を思い出せないようです。

于 2009-01-10T01:27:52.657 に答える