電子書籍の厳選無料作品が豊富!

C#でWindowsフォームのアプリケーションを作りました
構成は親のフォームのプログラムFormMain.csと5ケの子供プログラムFormSub1~5.csです

データの受渡しは親プログラムの中に
class CommonData
{
static public bool BoolData = true;
static public int IntData = 1;
static public string StringData = "冬が来ました";
}
を作り、子供プログラムの中で
if (CommonData.BoolData == false) .........
int j = CommonData.IntData;
CommonData.StringData = "きっと春も来るでしょう";
などとやっておりました

ところが今回事情があり、Windowsフォームのアプリケーションのプロジェクトとは別プロジェクトとして.NET C++でDLLを作らなくてはならなくなりました
サンプル等を参照して何とかDLLを作り動かしましたが、DLLの中で上述のCommonData.BoolDataを参照しなくてはなりません
デバックではDLLの中でCommonData.BoolDataに変わる固定値を臨時に設定してロジックを検証しました

ところが本番ではWindowsフォームのアプリケーションのFormMain.csの中に規定されたCommonData.BoolDataを参照しなくてはなりません
DLL側でどのようにすれば良いのでしょうか?

なおCommonData.BoolDataのtrue、falseは時々刻々変化しますので、DLLが起動される度に最新の状態を参照したいのです

A 回答 (1件)

A:FormMain.csがある実行ファイル


B:.NET C++のDLL

とすると、AがBを使っているが、BからもAのデータに一部アクセスしたい、ということでしょうか。

だとすると、不可能ではないですがかなり面倒ですので下記のような構造にすることをお勧めします。

A:FormMain.csがある実行ファイル
B:.NET C++のDLL
C:データ管理を行うDLL(CommonData等を含むC#のプロジェクト)

として、

A → B、C にアクセスする
B → C にアクセスする

という構造にするのはどうでしょうか。
    • good
    • 0
この回答へのお礼

ありがとうございます

お教えに従い色々トライしてみましたが、現在のところ上手くいきません

仕方がないので臨時的ににRegistry渡しにしています
でもこれでは秘密保持上問題です
一般使用する際には絶対的にメモリー参照方式に切り替えなくてはなりません

今後もトライを続けますので宜しくご指導願います

ありがとうございました

お礼日時:2013/01/07 22:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!