枚举中的源代码问题

时间:2011-02-09 18:09:21

标签: c#

目标:
将一个枚举值赋给animalType对象。

  

Categories.CategoryType animalType =   (CategoryType)Enum.Parse(的GetType(CategoryType),   pCategory);

问题: 源代码无法正常工作,它给出了两条错误消息:

  

“Assignment1.Categories.CategoryType”是'type',但用作a   '变量'“

     

“方法'GetType'没有重载需要1个参数”

namespace Assignment1
{
    class AnimalManager
    {
        private List<IAnimal> _myAnimal = new List<IAnimal>();

        public void CreateNewAnimal(string pName, string pHousing, string pAge, string pCategory, string pAnimal, string pEater, string pGender)
        {
            Categories.CategoryType animalType = (CategoryType)Enum.Parse(GetType(CategoryType), pCategory);
        }
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Assignment1.Categories
{
    /// <summary>
    /// 
    /// </summary>
    public enum CategoryType
    {
        Mammal,
        Bird,
        Marine,
        Reptile,
        Insect
    }
}

2 个答案:

答案 0 :(得分:3)

试试这个:

Categories.CategoryType animalType =
    (CategoryType)Enum.Parse(typeof(CategoryType), pCategory);

答案 1 :(得分:0)

尝试:

CategoryType animalType = 
    (CategoryType)Enum.Parse(typeof(CategoryType), pCategory);

如果您需要静态知道的某种类型(在编译时),请使用typeof运算符。 GetType方法适用于多态性情况下的运行时类型信息(在这种情况下,您可以执行pCategory.GetType之类的操作)。最后请注意Enum.Parse可以抛出 - 所以你可能想看看Enum.TryParse