任何人都可以告訴我如何使用反射創建一個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
啊,是的,這更可能是問題的含義。我會留下我的回答,以防萬一它變得有用,但我認爲你有這個:) – 2009-04-10 19:47:39
0
你的意思是CodeDOM?反射用於讀取現有的代碼,而不是創建新的代碼。
如果做意味着CodeDOM的,我相信,你只需要創建CodeMemberProperty
並設置其屬性Attributes
包括MemberAttributes.Abstract
。
相關問題
- 1. 使用屬性反射測試屬性
- 2. 使用反射在運行時創建類型的屬性上添加屬性
- 3. 使用反射來調用屬性
- 4. 反射性能 - 創建委託(屬性C#)
- 5. Javascript屬性反射
- 6. 創建反射
- 7. 使用反射獲取屬性的值
- 8. 使用反射設置對象屬性
- 9. C#中使用反射屬性?
- 10. 使用反射選擇一些屬性
- 11. 使用反射設置屬性值
- 12. 使用反射來解決Linqed屬性
- 13. 使用反射獲取屬性
- 14. C#自定義屬性屬性反射
- 15. 反射,屬性和屬性選擇
- 16. 使用反射c獲取動態創建的ASPxTextBox的Text屬性#
- 17. 將自定義屬性添加到使用反射創建的類型
- 18. 如何使用反射來創建一個「反射機器」
- 19. 使用反射來得到一個屬性的屬性
- 20. 使用反射從元數據類獲取屬性屬性
- 21. 創建由反射
- 22. 創建反射Opengl
- 23. 使用反射優化對象創建
- 24. 使用反射創建HttpPostedFile的實例
- 25. 使用反射創建新對象?
- 26. 使用Java反射創建對象
- 27. 使用反射創建對象
- 28. Akka - 使用反射創建演員
- 29. 如何使用-moz-element()創建反射?
- 30. 如何創建使用反射
我要麼不明白這個問題,要麼這個問題沒有意義。 – Brian 2009-04-10 19:42:25