是否有可能從派生類中獲取基類的枚舉值而不使用反射?派生類的基類枚舉值?
下面的代碼使用反射,這似乎有點矯枉過正從對象實例中獲取基類字段值。
using System;
namespace Seans
{
public class BaseClass
{
public enum eEnum{a, b, c}
}
class Program
{
static void Main(string[] args)
{
DerivedClassA newObject = new DerivedClassA();
TraverseTheObjectHierachyForTheTaskListEnum(newObject.GetType());
Console.ReadLine();
}
public static Type GetTaskListType(Type type)
{
// Handle the cases where our enums are defined in the base class
return TraverseTheObjectHierachyForTheTaskListEnum(type);
}
private static Type TraverseTheObjectHierachyForTheTaskListEnum(Type type)
{
foreach (Type nestedType in type.GetNestedTypes())
{
if (nestedType.IsEnum)
{
// Enum Name, now you can get the enum values...
Console.WriteLine(nestedType.FullName);
return nestedType;
}
}
if (type.BaseType != null)
{
return TraverseTheObjectHierachyForTheTaskListEnum(type.BaseType);
}
return null;
}
}
}
你想要訪問什麼?對於任何對象實例類型,Enum類型的所有屬性及其相應的可能值?不清楚你想回答什麼問題。 – jro 2009-09-24 21:08:42
是你的權利,一個對象實例的當前值。 – Ferdeen 2009-09-26 20:24:37