我有一个函数,参数接收任意类型的枚举,作为下拉列的items,该怎么声明呢

解决方案 »

  1.   

    不建议直接用枚举做参数建议使用type做参数,函数内部检查一下type是否IsEnum,如果不是再抛出参数异常
      

  2.   

    使用object类型,接收进来后再转换成枚举类型.
      

  3.   

    可以这样写,例如void AddItem(Enum x)
    {
            var name = Enum.GetName(x.GetType(), x);
            this.Items.Add(y);
    }
      

  4.   

    this.Items.Add(y)  -->  this.Items.Add(name);
      

  5.   

      Method1(MyEnum.FirstElement);
      Method2(typeof(MyEnum));
    //方法1,2都可以,但是你从调用方式来看,明显方法2语义更明确,更不容易让人误会        private void Method1(Enum e)
            {
                
            }
            private void Method2(Type p)
            {
                if(!p.IsEnum)
                    throw new  InvalidEnumArgumentException();        }
            public enum MyEnum
            {
                FirstElement,
                NextElement        }