@Ian G : 나는 ECMA 335에서 목록을 컴파일 내가
List<MethodInfo> mis =
myObject.GetType().GetMethods().Where((MethodInfo mi) =>
{
mi.GetCustomAttributes(typeof(MyAttribute), true).Length > 0;
}
).ToList();
foreach(MethodInfo mi in mis)
{
List<Instruction> lst = ReflectionHelper.ReadIL(mi);
... find useful opcode
FieldInfo fi = mi.Module.ResolveField((int)usefulOpcode.Argument);
object o = fi.GetValue(myObject);
...
}
을 사용할 수 있습니다 그리고 사람이 그것을 필요로하는 경우 옵 코드 길이 목록이 여기에 있다는 것을 발견했다 :
Dictionary<OperandType, int> operandSizes
= new Dictionary<OperandType, int>()
{
{OperandType.InlineBrTarget, 4},
{OperandType.InlineField, 4},
{OperandType.InlineI, 4},
{OperandType.InlineI8,8},
{OperandType.InlineMethod,4},
{OperandType.InlineNone,0},
{OperandType.InlineR,8},
{OperandType.InlineSig,4},
{OperandType.InlineString,4},
{OperandType.InlineSwitch,4},
{OperandType.InlineTok,4},
{OperandType.InlineType,4},
{OperandType.InlineVar,2},
{OperandType.ShortInlineBrTarget,1},
{OperandType.ShortInlineI,1},
{OperandType.ShortInlineR,4},
{OperandType.ShortInlineVar,1}
};
:
는 다음의 방법으로 사용되는 모든 필드를 검색하는 방법입니다. 왜 당신은 반성이 필요합니까? "클래스 변수"를 사용하면 필드를 의미합니까? 특정 필드의 현재 인스턴스를 쉽게 가져올 수 있지만 인스턴스를 생성하는 데 사용되는 생성자 인수는 가져올 수 없습니다. 왜 이것을 필요로합니까? –
클래스 변수 란 클래스라는 클래스 범위 필드를 의미합니다. 부모 클래스에서 사용하는 변수에 따라 수행해야 할 특별한 작업이 필요한 일부 메서드에 대한 특성을 선언 할 생각입니다. 특정 필드의 현재 인스턴스가 나를 위해 작동 할 수 있습니다. – kerem