問題タブ [dynamicmethod]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - データベースからのデータに基づいて C# メソッドを動的に呼び出す
上司から、計算エンジンを調べるように言われました。事実上、ユーザーは計算を実行できるデータのテーブルを使用できます。また、当社が実施する特定の制限に基づいて独自の計算を作成することもできます (作成された計算はデータベースに保存されます)。
データベースに格納されているものに応じて、C# で特定のメソッドを呼び出すことは可能ですか? したがって、データベースが言う場合、計算は標準偏差を実行する必要があります。データベースからその情報を取得すると、C# で使用する標準偏差メソッドを呼び出すことができるでしょうか?
これが明確であることを願っています。
c# - 動的 IL メソッドにより、「操作によりランタイムが不安定になる可能性があります」
System.Security.VerificationException: 操作により、ランタイムが不安定になる可能性があります。Connance.CommunicatorApi.ReportApiClient.AcknowledgeRecallsAsyncDynamicHandler (オブジェクト、AcknowledgeRecallsCompletedEventArgs) で
それが私が得ているエラーです。私がやろうとしていること (背景) は、メソッドのクラスのグローバル イベント ハンドラーを作成することです。私は WCF で静的プロキシを使用しています。すべての呼び出しを追跡し、すべての WCF Web メソッドに戻るレイヤーを作成する必要があります。残念ながら、WCF は "Completed" イベントの EventArgs を厳密に型指定するため、ほとんど不可能です。
私は何かを試してみることにしました。イベントが の場合でも、イベントを処理するEventHandler<SomeSpecificEventArgs>
署名の方法を登録できます。void Method(object, object)
偉大な。そこで、グローバルハンドラDynamicMethod
を呼び出すを作成し、それを各イベントに登録することにしました。
私は2つの方法を試しました:
1) DynamicMethod は void (オブジェクト、オブジェクト) 型です
2) 型 void (object, SomeSpecificEventArgs) -- 汎用メソッドを使用して型を取得します。
手動またはイベントのためにメソッドを呼び出そうとすると、上記の例外が発生します。
これが私のコードです:
編集:なるほど。別の問題があることがわかりました。私はシルバーライトで作業しています。別のプロジェクトでシナリオを再現するDynamicMethod
ことができ、所有者を設定できるオーバーロードを使用して動作させました。次に指定します
DynamicMethod dm = new DynamicMethod("TestMethod2", typeof(void), new[] { typeof(MyClass), typeof(string), typeof(string) }, typeof(MyClass));
、
ldarg.0
、ldarg.1
、および を使用しldarg.2
ます。ただし、これはセキュリティ クリティカルなコンストラクターであり、Silverlight では実行されません。その場合、どのように設定する必要があるのか わかりません。public を staticにして、Handler
args を 0 ~ 1 にロードしますか? 次のようなエラーが発生します。
メソッド「DynamicClass.TestMethod2(System.String, System.String)」によるメソッド「dynamicass.MyClass.Handler(System.String, System.String)」へのアクセスに失敗しました。"}
.net - SilverlightでDynamicMethodを使用する場合のVerificationException
デリゲートを介して特定のメソッドを呼び出したいのですが、VerificationExceptionが発生しています。私は次のコードを使用しています:
基本的に、私は電話しようとしています
this.Startup + = this.Application_Startup;
上記のコードを使用してデリゲートを介して。
これにより、VerificationExceptionが発生します。操作によってランタイム例外が不安定になる可能性があります。
このコードを新しいSilverlightアプリプロジェクトのアプリコンストラクターに配置することで、これを非常に簡単に再現できます。私は何が間違っているのですか?
.net - ILGenerator.Emit* を介して「通常の」メソッドを呼び出す方法は?
DynamicMethod が (たとえば、ILGenerator.EmitCall または同様のものを介して) 「通常の」メソッド、たとえば Private Sub BlahBlah(ByVal obj as Object) を呼び出すことは可能ですか?
前もって感謝します
.net - DynamicMethodをディスクに保存する
DynamicMethodを使用して実行時にメソッドを生成するコードを継承しました。また、生成されているコードの一部を変更する必要があります。
私はMSILのn00bなので、生成されたコードをReflectorにロードして、コードが私が祈っていることを確実に実行できるようにしたいと思います;)
ただ、「匿名でホストされているDynamicMethodsアセンブリ」をディスクにシリアル化する方法がわかりません。これは可能ですか?もしそうなら、どのように?
c# - DynamicMethod.CreateDelegate からの例外、ほぼ同じ MSDN の例
CreateDelegate(delegateType) を呼び出すとSystem.ArgumentException
、MSDN によると、delegateType のパラメーターの数が間違っているか、パラメーターの型が間違っているためです。
奇妙な部分は、私が使用しているコードがほとんどすべて MSDN からコピーされていることです。全体としての私の機能:
ご覧のとおり、コメントもあります。ご覧のとおり、同じ型の同じ数のパラメーターを持つ delParams 変数と handlerParams 変数があります。
ここで何が起こっているのですか?
MSDN: http://msdn.microsoft.com/en-us/library/ms228976.aspx
EDIT: The event im trying to bind to:
c# - クラスをインスタンス化せずにリフレクションを使用して public 非静的メソッドを呼び出す C#
C# で、クラスをインスタンス化せずにメソッド (非静的) を呼び出すことは可能ですか?
System.Reflection.Emit 名前空間を使用してこのメソッドを試しました。MyMethod() の IL を動的メソッドにコピーしましたが、例外が発生しました。
FatalExecutionEngineError が検出されました: ランタイムで致命的なエラーが発生しました。エラーのアドレスは、スレッド 0x2650 の 0x5dceccf5 でした。エラー コードは 0xc0000005 です。このエラーは、CLR のバグ、またはユーザー コードの安全でない部分または検証不可能な部分のバグである可能性があります。このバグの一般的な原因には、COM 相互運用機能または PInvoke のユーザー マーシャリング エラーが含まれ、スタックが破損する可能性があります。
ありがとうございました
c# - refキーワードを使用せずに(ILを使用して)パラメーターのrefを置き換えます
refキーワードを使用せずに、パラメーターのオブジェクト参照を置き換えることができるようにしたいと考えています。
refの使用を避けている理由は、メソッドを探すコレクション初期化子の呼び出しを保持するAdd(T item)
ためであり、コレクションクラスで参照をそのインターフェイスの別の実装に置き換える必要があります。
私はこれを行うためにいくつかの異なる方法を試しました。まず、文書化されていないキーワード、、を使用してみ__makeref
まし__refvalue
た__reftype
。
次にDynamicMethod
、refパラメーターを使用して逆アセンブルされた同様の呼び出しを調べて観察したものを模倣しようとするILを使用してを作成しようとしました。
示すコードは次のとおりです。
ありがとうございました。
delphi - SuperObjectを使用して、Delphiでオブジェクトをパラメータとして使用するメソッドを呼び出す方法は?
SuperObjectライブラリを使用して、特定のオブジェクトのメソッドをその名前で呼び出し、この回答のようにSOInvokerメソッドを使用してそのパラメーターをjson文字列として指定できます。
作成したオブジェクトをパラメータとして送信する方法を知りたいのですが。私はそれを次のように送ろうとしました
ただし、MyMethod内では、LObjectList参照は失われます。
私は何が間違っているのですか?
スーパーオブジェクトライブラリはここからダウンロードできます