班级在这里:
public partial class CodeMergeNodeHandler
{
[State]
public enum State
{
[Finish]
[Label("合并成功")]
Accepted,
[Start]
[Label("创建成功")]
Created,
}
}
我确实得到了州的MemberInfo:
var members = CodeMergeNodeHandler.GetType().GetMembers();
MemberInfo memberOfState ; // the MemberInfo of the Enum State;
foreach (var member in members)
{
var attrs = member.GetCustomAttributes();
if (attrs.Any(attr => attr is StateAttribute))
{
memberOfState = member;
}
}
我尝试获取memberOfState的成员,Accepted
和Created
:
private static (string start, string end) GetStartEnd(this MemberInfo member)
{
var start = default(string);
var end = default(string);
var members = member.GetMembers(); //error, here is my question.
foreach (var sub in members)
{
var attrs = sub.GetCustomAttributes();
if (attrs.Any(attr => attr.GetType() == typeof(StartAttribute)))
{
start = sub.ToString();
}
if (attrs.Any(attr => attr.GetType() == typeof(FinishAttribute)))
{
end = sub.ToString();
}
}
return (start, end);
}
为什么member
没有方法作为GetMembers()
,但是当我像图片一样调试时,目标位于DeclaredMembers
,我怎么能得到它们?
答案 0 :(得分:0)
我解决了这个问题:
Type type = member as Type;
将MemberInfo类作为Type类,可以使用Type of Type类。