2017-02-28 8 views
0

私はC#を学び、別のソリューションで特定のロジックを作成しようとしていました。C#でプロジェクトDLLのクラス内のメソッドにアクセスする方法

このシナリオでは、いくつかのクラスを持つプロジェクトを作成しました。各クラスには特定のプロセスのための特定のメソッドがあります。私はこのプロジェクトのDLLを作成しました。それを "LogicLibrary.DLL"と呼んでください。

ここでは、 "LogicLibrary.DLL"への参照を追加した別のプロジェクトを作成しました。

私の問題は、DLLのクラス内のメソッドにどのようにアクセスすればよいかわかりません。

と仮定LogicLibrary.DLLは、順番に方法Add(int a, int b)Sub(int a, int b)Mul(int a, int b)Div(int a, int b)を持っている "Calculator.cs" クラスがあります。

新しいプロジェクトでは、上記のいずれの方法にもどのようにアクセスできますか。 DLL内のクラスのオブジェクトを作成する特別な方法はありますか?

ありがとうございました!

+0

'Calculator'は静的クラスですか?もしそうでなければ、クラスをインスタンス化するか、クラスから継承する必要があります。 – maniak1982

+0

別のソリューションを作成しないでください。アクセス修飾子(public、internal、private ..)が正しく設定されていることを確認してください。 – kblau

+0

外部のソリューションからDLLを直接参照することはおそらく悪い考えです。可能であれば、ソリューション外のコードを参照する必要がある場合は、NuGetパッケージを作成してNuGetサーバーに格納する必要があります。これにより、あるソリューションと別のソリューション間のバージョン依存性を管理できます。 – mason

答えて

0

ライブラリをインポートしました。次に、使用するクラスを見つける方法をコンパイラに伝える必要があります。

すべてのライブラリにはデフォルトの名前空間があります。プロジェクトを右クリックし、[プロパティ]を選択すると表示されます。

あなたのクラス定義は、名前空間を示すこともできます。たとえば、

namespace LogicLibrary 
{ 
    //Class(es) here 
} 

参照を追加してこのライブラリをインポートすると、そのクラスを消費するコードは、コンパイラにその場所を知らせる必要があります。あなたは、いくつかの方法でこれを行うことができます:それは、コンパイラによって自動的に適用されますように

あなたは、名前空間をインポートすることができます。

using LogicLibrary; 

また、完全にあなたが使用するクラスの名前を修飾することができます。

var calculator = new LogicLibrary.Calculator(); 

いずれかの方法で動作します。名前空間は、衝突を避けるためにコードを編成するのに役立つ論理的なコンテナ以外にはありません。

0

ReficcesにLogicLibrary.dllを追加した場合は、これをusingに入れるだけです。

using LogicLibrary; 
0

私はプロジェクトに取り組んで、その後、私はこのようなクラスのオブジェクトを作成することができていることが見つかりました:)

LogicLibrary.Calculator calculatorObject =新しいLogicLibrary.Calculatorを(; int sum = calculatorObject.Add(1,3);

関連する問題