2011-10-20 5 views
0

私はいくつかの事前に作られたコードをDLLに分割しようとしています。それは単純なロガーシステムです。Visual Basicで変数とDLLの使用に関する質問を共有しました。スコープの混乱

プロジェクトのメインフォームと共有する必要があるものがいくつかありますので、それらを共有変数として設定しますが、頻繁に共有するものは使用しません。範囲について。私はそれについてここに投稿し、誰かが私が完全に理解していないことを説明できるかどうかを確かめました。

これはロガーなので、いくつかの場所で使用されます。ロギングを必要とするその他のDLLは、インスタンス化されたオブジェクトとプロジェクト参照を介して参照できます。私のメインフォームには、インスタンス化されたオブジェクトとロガーライブラリのリファレンスもあります。

私のプロパティの1つが接続文字列であり共有されているため、DLL内のロガークラスのインスタンスはメインUIフォームのインスタンスと同じ共有値を持つことになりますか?または、インスタンスがDLLの内部にあるという事実は、私が必要とするスコープ境界を提供するでしょうか?

私は主に、2つの異なる接続文字列を使用してログを記録することを心配しています。

(私は私の質問は理にかなって願っています。それは、コメントを投稿していない場合、私は明確にしてみます。)

+0

接続文字列がどのように「共有」されているか、どのようにdllが使用されているかを表すコードを表示できますか? – msarchet

答えて

0

いいえ、インスタンスがDLLであるという事実は、スコープの境界を提供していません。あなたが必要です。 DLL内のクラスまたはメンバーがstaticと宣言されている場合、それらは共有され、問題が発生する可能性があります。したがって、それらを宣言してstaticとし、それらを消費するときにオブジェクトのインスタンスをnew作成するようにしてください。そうしなければOKです。

+0

私のためにそれをクリアするためにありがとう。私はおそらく私が必要以上に "共有"していますが、私はまた、ジャンク引き出しとしてモジュールを使用して停止しようとしているので、私はこれらの変更で足で自分自身を撃っていない知って良いです。 – TWood

関連する問題