Ehs*_*jad 3 c# reflection enums types
假设我有这个枚举:
namespace BusinessRule
{
public enum SalaryCriteria : int
{
[EnumDisplayName(DisplayName = "Per Month")]
Per_Month = 1,
[EnumDisplayName(DisplayName = "Per Year")]
Per_Year = 2,
[EnumDisplayName(DisplayName = "Per Week")]
Per_Week = 3
}
}
Run Code Online (Sandbox Code Playgroud)
我的名字在一个字符串变量中,如:
string EnumAtt = "SalaryCriteria";
Run Code Online (Sandbox Code Playgroud)
我试图检查这个枚举是否由这个名称定义,如果定义我想得到它的instance.i尝试这样,但type返回null:
string EnumAtt = "SalaryCriteria";
Type myType1 = Type.GetType(EnumAtt);
Run Code Online (Sandbox Code Playgroud)
我也试过这个:
string EnumAtt = "BusinessRule.SalaryCriteria";
Type myType1 = Type.GetType(EnumAtt);
Run Code Online (Sandbox Code Playgroud)
任何想法我怎么能实现这一点.
dbc*_*dbc 10
要在给定枚举的当前AppDomain中搜索所有已加载的程序集 - 没有完全限定的程序集名称 - 您可以执行以下操作:
public static Type GetEnumType(string enumName)
{
foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
{
var type = assembly.GetType(enumName);
if (type == null)
continue;
if (type.IsEnum)
return type;
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
例如(选择一个不在我的程序集中的半随机枚举):
var type1 = Type.GetType("System.Xml.Linq.LoadOptions") // Returns null.
var type2 = GetEnumType("System.Xml.Linq.LoadOptions") // Returns successfully.
Run Code Online (Sandbox Code Playgroud)
您的名称仍应包含命名空间.
| 归档时间: |
|
| 查看次数: |
11992 次 |
| 最近记录: |