il

    2熱度

    1回答

    當我編譯下面的代碼調試... public class MyClass { private int myField; public int MyProperty { get { return myField; } set { myField = value; } } } ......看似無用的指令奇怪的字節碼編譯器產生。例如

    0熱度

    2回答

    我的庫有一些方法,它的返回值不應該被丟棄。作者,即使對我來說,泄漏它們也是一個非常流行的錯誤。所以我希望編譯器在程序員提醒時提醒。 這樣的值可以被存儲或用作另一種方法的參數。這不是嚴格使用存儲的值,但如果簡單地丟棄它是100%的錯誤。 是否有任何簡單的設置方式來爲我的圖書館用戶強制執行此操作? var x = instance.Method(); // ok field = instance.M

    4熱度

    3回答

    當我們聲明的int例如一個變量: int i = 4; 生成以下IL: IL_0001: /* 1A | */ ldc.i4.4 我可以理解,圖1A是十六進制表示4,那麼我的理解是否正確:保存十六進制值是用來指它的值還是意味着不同的東西? 當我宣佈一個雙變量,如: double d = 12.34; 繼IL產生這我不能夠得到一些東西在裏面: IL_0003: /* 23 | A

    5熱度

    1回答

    我想在運行時使用反射創建一個方法的副本。 我有以下代碼。 public static R CopyMethod<T, R>(Func<T, R> f, T t) { AppDomain currentDom = Thread.GetDomain(); AssemblyName asm = new AssemblyName(); asm.Name = "Dynamic

    1熱度

    1回答

    我正在構建一個使用反射的動態方法。大多數教程和文檔(例如How to: Define and Execute Dynamic Methods或Creating method dynamically, and executing it)都顯示了一個非常簡單的示例。 我試圖找到一種方法來引用動態程序集中的另一個程序集。 例如,我希望能夠通過使用Reflection.Emit構造以下功能。 public

    2熱度

    1回答

    我想將sql日誌記錄注入到幾個方法中。基本上,我想改造 public static object IDbCommandTest_ExecuteScalar(IDbCommand command) { // .. do stuff command.CommandText = "SELECT ..."; var obj = command.ExecuteS

    1熱度

    2回答

    正如我看到的C#編譯器和Reflection.Emit總是發出.locals init值和引用類型的變量(即使他們後來無條件地初始化)。 .maxstack 1 .locals init ( [0] object x) L_0000: ldloca.s x L_0002: call void Program::MethodWithOut(object&)

    5熱度

    1回答

    .method public static void Test<class T>(object A_0) cil managed { // Code size 13 (0xd) .maxstack 1 .locals init (!!T V_0) IL_0000: ldarg.0 IL_0001: isinst !!T IL_000

    6熱度

    2回答

    我有這樣的代碼來發送加載整數或字符串值的IL代碼。但我不知道如何添加decimal類型。它在Emit方法中不受支持。任何解決方案? ILGenerator ilGen = methodBuilder.GetILGenerator(); if (type == typeof(int)) { ilGen.Emit(OpCodes.Ldc_I4, Convert.ToInt32(value

    0熱度

    1回答

    我試圖從接口創建一個代理類。在方法中,我只想收集對象數組中的所有參數並傳遞給已知的方法。所以我設法讓它在沒有參數和返回類型的情況下工作。只要我嘗試創建我的數組,我會得到「其他信息:公共語言運行時檢測到一個無效的程序。」..真的不知道如何從這裏調試和IL代碼似乎是正確的(?)。 public class Program { static void Main(string[] args)