私はinterop-classを持っていますが、それは非常に多くの行を含んでいるので、機能を追加するのはとても面倒です。のは、私は次の操作を行う奨めIDでIDを取得するためのメソッドを持っている必要がありましょう:これを説明するVS2013を使用したデリゲート定義に基づいてC#デリゲートやメソッドなどを生成する方法は?
public class MyInterop
{
public class WCFDTypes
{
//....
public delegate int GetInt_Delegate(int id);
//...
}
public class DTypes
{
//....
public delegate int DotNetInterface_GetInt_Delegate(int id);
//...
}
public WCFDTypes.GetInt_Delegate GetInt;
//...
private DTypes.DotNetInterface_GetPlotLabel_Delegate Nat_GetInt;
//...
public MyInterop(string moduleName)
{
DelegateBuilder builder = new DelegateBuilder(moduleName);
//...
Nat_GetInt = Build<DTypes.DotNetInterface_GetInt_Delegate>(builder);
//..
}
//...
GetInt = (int id) =>
{
return NatGetInt(id);
}
public MyInterop(string moduleName)
{
//...
Nat_GetInt = Build<DTypes.DotNetInterface_GetInt_Delegate>(builder);
//..
}
public MyInterop(MyApplication, string address)
{
//...
GetInt = client.GetInt;
//..
}
}
は、この質問の範囲を超えています。戻り値の型やパラメータを持たなくても(もちろん、GetIntのようなfucntionalityの名前に基づいて)内部的なクラス、2つのメソッドの宣言、2つのコンストラクタへの修正を行うことができます。
スニペットを探していましたが、見つかった例は非常に基本的でした。
これは確かに最悪の方法です。 [DllImport]やC++/CLIラッパーを使用できない理由は完全には不明です。 –
これは私のコードではありません。私が言ったように、それはこの質問の範囲を超えています。 –
プラスそれはネイティブDLLからのDllImportを使用します。また、外部プラグインのWCFで動作します。 –