13

私は列挙型クラスを持っています、

public enum USERTYPE
{
   Permanant=1,
   Temporary=2,
}

私のビジネスオブジェクトでは、この列挙型を次のように宣言するだけです

private List<USERTYPE> userType=new List<USERTYPE>;

get/set メソッドでは、次のように試しました

public List<USERTYPE> UserType
    {
        get 
        {
            return userType;
        }
        set
        { 
            userType= value; 
        }
    }

ここでは、行数を 0 として返します。ここで Enum のすべての値を取得するにはどうすればよいですか。誰か助けてください...

4

5 に答える 5

29

これを使用して、個々の列挙値をすべて取得できます。

private List<USERTYPE> userTypes = Enum.GetValues(typeof(USERTYPE)).Cast<USERTYPE>().ToList();

このようなことをより頻繁に行う場合は、そのための汎用ユーティリティ メソッドを作成できます。

public static T[] GetEnumValues<T>() where T : struct {
    if (!typeof(T).IsEnum) {
        throw new ArgumentException("GetValues<T> can only be called for types derived from System.Enum", "T");
    }
    return (T[])Enum.GetValues(typeof(T));
}
于 2012-06-28T07:54:08.810 に答える
5

GetValuesを返しますが、実際には(ゼロからインデックスが付けられた 1 次元配列) であることSystem.Arrayがわかっています。したがって、次を使用します。TEnum[]TEnumUSERTYPE

var allUsertypeValues = (USERTYPE[])Enum.GetValues(typeof(USERTYPE));
于 2012-06-28T08:02:03.950 に答える
4

UserTypeそれで試してみてください、

 UserType = Enum.GetValues(typeof(USERTYPE)).OfType<USERTYPE>().ToList();
于 2012-06-28T12:54:42.640 に答える
2

リストから特定の列挙値を取得する場合は、user.UserType最初Addにこのリストに値を列挙する必要があります。

var user = new User();
//1 value - PERMANENT
user.UserType.Add(USERTYPE.Permanent);

ただし、任意の値からすべての可能な値を取得するだけでよい場合は、enum試すことができますEnum.GetValues

//2 values - Permanant and Temporary
var enums = Enum.GetValues(typeof(USERTYPE));
于 2012-06-28T08:00:48.727 に答える
2

あなたが持っているのは基本的に列挙型のリストです。その列挙内の個々のアイテムではありません。

あなたができる列挙値のリストを取得するには

string[] str = Enum.GetNames(typeof(USERTYPE));

List<> の代わりに get/set return string[] で使用するには

public string[] UserType
{
    get 
    {
        return Enum.GetNames(typeof(USERTYPE));
    }
}

実行時に列挙型に値を追加できないため、ここでは set は機能しないと思います。

于 2012-06-28T07:51:09.637 に答える