0
 public object Value
    {
        get
        {
            return _value;
        }
        set
        {

            _value = value;
        }
    }

   public enum someEnum
      {
         sString = 1,
         sBoolean = 2,
         sInt     = 3,
         sDate    = 4
         sData    = 5  //Custom data type eg; a class
      }

プロパティ値が someEnum 列挙子で指定されたデータ型のみを受け入れて返すようにしたい。私はvs2012を使用しています

4

2 に答える 2

0

これを試しましたか:

public someEnum Value
{
 get; set;
}
于 2013-02-11T19:07:09.397 に答える
0

enumを試してみましたが、機能しますが、「System.String」のようなenum値をハードコーディングし、set修飾子でEnum.TryParseを使用する必要がありました。

MyEnum type;
bool res = Enum.TryParse<MyEnum>(Convert.ToString(value.GetType()), out type);

私見、拡張メソッドを使用すると見栄えが良くなります

private object _value;
public object Value
{
    get
    {
        return _value;
    }
    set
    {
        if (value.IsValidType())
            _value = value;
        else
            throw new Exception("Not a valid type");
    }
}

public static class ObjectExtenstions
{
    public static bool IsValidType(this object obj)
    {
        if (obj.GetType() == typeof(System.String) || obj.GetType() == typeof(System.Int32))
            return true;
        return false;
    }
}
于 2013-02-11T19:37:44.057 に答える