누군가 Reflection을 사용하여 MustOverride
속성을 만드는 방법을 말해 줄 수 있습니까?리플렉션을 사용하여 MustOverride 속성을 만드시겠습니까?
1
A
답변
3
Reflection.Emit
으로 말합니까? 그렇다면 TypeBuilder.DefineMethod
과 MethodAttributes.Abstract
을 사용합니다.
다음은 예입니다. Bar.Method
은 abstract
이고; Bar2.Method
이이를 대체합니다.
AssemblyName an = new AssemblyName("Foo");
var asm = AppDomain.CurrentDomain.DefineDynamicAssembly(an, AssemblyBuilderAccess.Run);
var module = asm.DefineDynamicModule("Foo");
var type = module.DefineType("Bar", TypeAttributes.Abstract | TypeAttributes.Class | TypeAttributes.AnsiClass);
var method = type.DefineMethod("Method", MethodAttributes.Abstract | MethodAttributes.Public | MethodAttributes.Virtual,
CallingConventions.HasThis, typeof(int), Type.EmptyTypes);
var final = type.CreateType();
type = module.DefineType("Bar2", TypeAttributes.Sealed | TypeAttributes.Class | TypeAttributes.AnsiClass, final);
var method2 = type.DefineMethod("Bar", MethodAttributes.Public | MethodAttributes.Virtual,
CallingConventions.HasThis, typeof(int), Type.EmptyTypes);
var il = method2.GetILGenerator();
il.Emit(OpCodes.Ldc_I4_4);
il.Emit(OpCodes.Ret);
type.DefineMethodOverride(method2, method);
var concrete = type.CreateType();
object obj = Activator.CreateInstance(concrete);
int result = (int) concrete.GetMethod("Bar").Invoke(obj, null);
+0
아, 그게 그 질문의 의미 일 가능성이 더 큽니다. 유용하게 밝혀 졌을 때를 대비하여 대답을 남겨 둘 것입니다.하지만 이걸 가지고 있다고 생각합니다 :) –
0
CodeDOM을 의미합니까? 반사 새 코드를 기존 코드를 읽는 데 사용됩니다.
당신이이 된 CodeDom 의미합니까 경우
, 나는 그냥CodeMemberProperty
을 만들고 MemberAttributes.Abstract
을 포함하도록 Attributes
속성을 설정해야합니다 생각합니다.
관련 문제
- 1. 리플렉션을 사용하여 런타임에 클래스에 새 속성을 추가하십시오.
- 2. 리플렉션을 사용하여 중첩 된 속성을 얻는 방법
- 3. 리플렉션을 사용하여 개체의 속성을 얻으려면 어떻게해야합니까?
- 4. 속성을 서로 호환되지 않게 만드시겠습니까?
- 5. 리플렉션을 사용하여 목록 유형의 속성을 설정하는 방법 <CustomClass>
- 6. 일반 유형의 리플렉션을 사용하여 Count 속성을 얻는 방법
- 7. C#에서 리플렉션을 사용하여 속성을 재정의하는 방법은 무엇입니까?
- 8. 리플렉션을 통해 전용 속성을 설정할 수 있습니까?
- 9. 리플렉션을 통해 어셈블리에서 속성을 읽는 중
- 10. 리플렉션을 사용하여 클래스 인스턴스화
- 11. 리플렉션을 사용하여 종속성 작업
- 12. 리플렉션을 사용하여 변수 이름 얻기
- 13. System.Reflection없이 리플렉션을 수행하는 방법? 즉 맞춤 반사 수업을 만드시겠습니까?
- 14. 클래스간에 Java 속성을 사용할 수있게 만드시겠습니까?
- 15. 정적 클래스에서 리플렉션을 사용하여 속성 설정
- 16. 리플렉션을 사용하여 사전에서 정보 얻기
- 17. 리플렉션을 사용하여 HttpPostedFile의 인스턴스 만들기
- 18. 리플렉션을 사용하여 지원 중단을 찾으십시오.
- 19. 리플렉션을 사용하여 메소드를 검사하는 방법
- 20. eclipse를 사용하여 문서를 만드시겠습니까?
- 21. 코코아를 사용하여 PDF를 만드시겠습니까?
- 22. 매크로를 사용하여 매크로를 만드시겠습니까?
- 23. Runtime.exec을 사용하여 파일을 만드시겠습니까?
- 24. MustOverride 속성에 대한 비공개 또는 보호 집합
- 25. 리플렉션을 사용하여 프리미티브 유형의 복합 유형 결정
- 26. 리플렉션을 사용하여 추상 클래스의 속성에 액세스합니다.
- 27. 리플렉션을 통해 컬렉션에 액세스
- 28. ViewModel의 속성을 사용하여 Binding에 DataGrids Columns 속성을 노출하는 방법?
- 29. Perlin 노이즈를 사용하여 번개를 만드시겠습니까?
- 30. "터치"를 사용하여 디렉토리를 만드시겠습니까?
나는이 질문을 이해하지 못하거나 질문이 이해가되지 않는다. – Brian