0

私は C# (Visual Studio 2010) でプログラムを作成しており、ライブラリの形で他の人が利用できるようにしたい一連の関数があります。私がしたことは、新しいプロジェクトを作成し、プロジェクトの種類をClass Libraryに設定することでした。出力タイプが DLL であることに気付きました。

他の人が動的にリンクできるランタイム ライブラリを必ずしも提供したいわけではありません。私が望むのは、他の人が自分のコードをコンパイルできる一連の関数を提供することです。(C++ では、これは .lib ファイルになると思います。)

C# ではすべてのライブラリが DLL ですか?

また、(ソース コードに関する限り) 関数定義のみを提供し、実装は提供したくない場合はどうすればよいでしょうか? C++ では .h ファイルのみを指定しますが、C# では何を指定しますか?

4

2 に答える 2

2

DLL は、C# で指定するものです。

実装の詳細を隠したい場合は、クラスを としてマークできますinternal。ただし、ライブラリを使用しているコードがクラスを参照したり、クラスのインスタンスを作成したりする必要がない限り、これは可能です。これらのいずれかが必要な場合、クラスの実装を公開することから逃れることはできません。

于 2012-11-18T19:33:05.250 に答える
0

Suhas が言ったように、DLL は配布したいものです。

はい、「ライブラリ」は DLL です。技術的には、現在は「アセンブリ」と呼ばれています。

C#でこれを行うと考えることができるほとんどの唯一の方法は、2つのアセンブリを持つことです。Interface1つ目は定義のみを含み、2 つ目はインターフェイスを実装する実際のクラスを含みます。最初のライブラリは出荷できますが、2 番目のライブラリは出荷できません。そのルートに進む場合は、簡単なテスト用のインターフェイスを実装するモック クラスも提供します。

これには、実行時に正しいアセンブリを動的にロードすることが含まれます。これは完全に実行可能です。通常、構成設定を介して。

それを超えて、実装を提供しない目的がコードの逆コンパイルを心配することである場合は、いくつかの難読化ツールを調べることができます。100% 効果的ではありませんが、多くのジュニア タイプの開発者を確実に思いとどまらせます。

于 2012-11-18T19:37:17.327 に答える