掲示板一覧 - トピック一覧 EA ソースコード生成・コード生成テンプレート
EXEC_ADD_INの実装(C#) |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
| 投稿者 | トピック |
|---|---|
| 未登録ゲスト | 投稿日時: 2006-10-17 5:30 |
EXEC_ADD_INの実装(C#)EXEC_ADDONを、C#で作成しようと試みています。
ですが、うまくいかないのです。 初歩的なことなのかも知れませんがよろしくお願いいたします。 戻り値の型や引数をいくつかのパターンで試しています。 ヘルプではBasicで記述されておりますので、 型をC#用に変更しています。(<<これで間違っているのでしょうか?) 以下のようにいろいろ実装を試しましたがだめでした。 ----------- すべての関数は以下のように単にstringを返却しているだけのものです。(Addinの動作の確認のためだけなので) 戻り値の型 oProcessOperation(パラメータ) { return string; } ---------- 以下が実際に実装したコードです。 namespace EaAddin_ExecAddin001 { public class ExecAddin001 { static string strRtn = "Hello"; /* object oProcessOperation(ref EA.Repository Repository, params object[] args) //object oProcessOperation(ref EA.Repository Repository, object[] args) object oProcessOperation(EA.Repository Repository, params object[] args) //object oProcessOperation(EA.Repository Repository, object[] args) object oProcessOperation(ref EA.Repository Repository, ref object[] args) object oProcessOperation(EA.Repository Repository, ref object[] args) */ string oProcessOperation(ref EA.Repository Repository, params object[] args) //string oProcessOperation(ref EA.Repository Repository, object[] args) string oProcessOperation(EA.Repository Repository, params object[] args) //string oProcessOperation(EA.Repository Repository, object[] args) string oProcessOperation(ref EA.Repository Repository, ref object[] args) string oProcessOperation(EA.Repository Repository, ref object[] args) } } --------------------- なお、呼び出し部分は以下のようにしています。 $result = "Hello_1" $result = %EXEC_ADD_IN("ExecAddin001","oProcessOperation","Test", "Test")% $result $resultには何も格納されません。(コード上なにも書かれない) EXEC_ADD_INで、resultにNULL文字(?)を設定しているようです。 --------------------- また、アドインを登録後、 EAを立ち上げ、 [アドイン]->[アドインの管理] で表示される"アドインマネージャ"では、 "EaAddin_ExecAddin001"の状態が"有効"になっています。 EA自体はアドインを認識しているようです。 --------------------- ちなみに、環境は、 EA::6.5.798 OS::XP Pro .NET::v2.0.50727 VS::2005 です。 --------------------- 何がどう違うのか分かりません。 よろしくお願いいたします。 |
|
| tkouno | 投稿日時: 2006-10-17 9:02 |
EA Administrator ![]() ![]() 投稿: 3939 |
Re: EXEC_ADD_INの実装(C#)C#での引数についてはこちらでも調べてみますが、取り急ぎ
EXEC_ADD_INの第一引数の値を"EaAddin_ExecAddin001"として 再度ご確認くださいますと助かります。 (アドインマネージャに表示されている値を設定してみてください。) よろしくお願いします。 |
| sugimoto | 投稿日時: 2006-10-17 12:50 |
EA Administrator ![]() ![]() 投稿: 1895 |
Re: EXEC_ADD_INの実装(C#)数箇所を修正すると正しく動作することを確認しましたので、
その内容を報告いたします。 ■呼び出し側 tkounoのコメントのように"EaAddin_ExecAddin001"を指定してください。 また、「機能マクロ」ヘルプには第3引数以降も記述がありますが、今回は必要ないため記述しなくても問題ありません。 $result = %EXEC_ADD_IN("EaAddin_ExecAddin001","oProcessOperation")% ■アドイン側 1) public 宣言をしてください。 2) 第2引数の型をobjectとしてください。(戻り値はstringでもobjectでもどちらでも構いません。) public object oProcessOperation(EA.Repository rep, object args) ご確認のほど、よろしくお願いします。 |
| 未登録ゲスト | 投稿日時: 2006-10-18 2:37 |
Re: EXEC_ADD_INの実装(C#)お忙しい中ありがとうございました。
以下の修正で動作しました。 1.EXEC_ADD_INの第一引数を"EaAddin_ExecAddin001"にする 2.アドイン関数をpublicにする 特に"2."に関しては本当に基本的なことで申し訳ありませんでした。 無事、解決しました。 これで、カスタマイズできる幅が大きくなります。 ありがとうございました。 |
|
| 未登録ゲスト | 投稿日時: 2006-10-18 3:45 |
Re: EXEC_ADD_INの実装(C#)なお、第3引数以降の関しては、以下のようにして取得できました。
public object oProcessOperation(EA.Repository Repository, object args) { int i = 0; object[] oArgs = (object[])args; for (i=0; i < oArgs.Length; ++i) { 略 } } ありがとうございました。 |
|
| sugimoto | 投稿日時: 2006-10-18 10:03 |
EA Administrator ![]() ![]() 投稿: 1895 |
Re: EXEC_ADD_INの実装(C#)EXEC_ADD_IN が動作したとのことで安心いたしました。
また、第3引数以降の取得方法について追加の情報ありがとうございます。 これらの情報は、今後C#を使用してEXEC_ADD_INを実装される方にとって、 とても有効だと思います。 また何かご質問や情報がありましたら、よろしくお願いします。 |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |





