reflection.emit

    0熱度

    1回答

    我想做的事情是這樣的:我用Google搜索 interface IMyInterface { void DoSomething(); string SaySomeWords(IEnumerable<string> words); } public class InterfaceImplFactory { public v

    0熱度

    1回答

    With Mono.Cecil看起來很簡單,我們只需將目標MethodDefinition的Body設置爲源MethodDefinition的Body即可。對於簡單的方法,這工作正常。但是對於一些使用自定義類型的方法(例如初始化新對象),它不起作用(在編寫程序集時拋出異常)。 這裏是我的代碼: //in current app public class Form1 { public s

    1熱度

    1回答

    我希望能夠將方法鏈接到所有類型的委託。我試圖用refelection.emit做到這一點,並將動態方法與delagate的佔用空間相鏈接,將其添加到委託中,並讓此動態方法使用所有參數調用常規函數。但我希望有一個easyer方式來做到這一點。 (我沒有包括reflection.emit代碼becouse是不是我想幫助,這仍然是一個原始試) 這是我想要得到結果的一個例子: public class F

    1熱度

    1回答

    我目前正在嘗試爲使用Reflection.Emit的接口創建一個「模擬」。 因此我創建了一個基類,用於所有動態生成的模擬。 對於接口中的屬性,我想在返回屬性值的基類中調用「Get」方法。 public class Mock { public static TIf Wrap<TIf>() where TIf : class { if (!typeof(TIf).IsI

    2熱度

    1回答

    我正在使用ILGenerator創建一個函數,並在發出指定實例時設置屬性的值。這是我正在處理的解決方案的性能方面的主要原因。我有一個基本的代碼形式,它應該採用2個對象並通過IL加載它們以調用設置函數。我發現的問題是我通過設置的值似乎被忽略,另一個似乎產生的值被設置在它的位置。 這是LinqPad提出的基本用法的例子,我已經創建演示此問題: void Main() { var insta

    2熱度

    1回答

    我需要處理從反射導入的類的事件。爲此,我使用所需參數類型創建一個動態方法,然後將其轉換爲委託並添加爲事件處理程序。 我在動態方法中唯一需要做的就是調用一個編譯方法,該方法接收可變數量的參數。因此,我'包'任何類型的任何數量的參數傳遞給一個編譯的方法。 問題來了:似乎我需要在IL操作碼中手動創建數組,並用參數填充(這有點複雜),而不是僅僅推送堆棧上的所有參數(這很簡單)。 下面是代碼(C++/CLI

    1熱度

    1回答

    我的錯誤中不支持調用的成員,當我運行這段代碼: var asmName = new AssemblyName("DynamicAssembly"); var asmBuilder = AssemblyBuilder.DefineDynamicAssembly (asmName, AssemblyBuilderAccess.Run); var moduleBuilde

    1熱度

    1回答

    對於性能優化,我使用以下代碼動態地創建每個用戶請求新類型: var dynamicAssemblyName = new AssemblyName(assemblyName); AssemblyBuilder dynamicAssembly = AssemblyBuilder.DefineDynamicAssembly(dynamicAssemblyName, AssemblyBuilderAcc

    0熱度

    2回答

    我在運行時創建一個類,並且一些類型已經在ModuleBuilder內部創建,我想重用它們,但我只有類型而不是TypeBuilder(這是我需要爲了改變它) 有沒有辦法從Type轉換成TypeBuilder? Type moduleType = ModuleBuilder.GetType(inXmlTemplateProperty.PropertyName); if (moduleTyp

    2熱度

    1回答

    我試圖用一些資源生成一個程序集文件。我正在使用System.Reflection.Emit.ModuleBuilder來定義資源。 AssemblyBuilder保存程序集時不會出現任何錯誤,但是當我嘗試讀取資源時,ResourceManager沒有任何條目,它的ResourceSets。我不確定AssemblyBuilder不保存更多資源,或者我的資源閱讀代碼有問題。 集生成代碼: public