2016-07-15 2 views
0

コードを非表示にする方法アプリケーションと私はクラスライブラリdllを参照してください。ドライバで私はオブジェクトを作成しました:C#のインターフェイスIはインターフェイスと継承されたクラスを含むクラス・ライブラリを開発

testClassLibrary1.testInterface obj = new testClassLibrary1.testClass(); 

と私はメソッドGetAge()を呼び出しました。 デバッグすると、getAge()メソッドのコードが引き続き表示される このコードを非表示にするにはどうすればよいですか?私は、メソッドの抽象を隠すために使用されるインターフェイスではないのですか?お知らせ下さい。

+1

真にコードを隠すことはできませんので、気にする必要はありません。たとえそれを別のアセンブリに配置し、それに対するインタフェース参照を持っていても、ユーザーはdllを分解することができます。 多変量変数の使用方法:これは、コンパイラが変数をどのように処理するかを変更するだけで、ユーザーが物理的にどのように検査できるかを変更することはありません。 –

+0

[メタデータから]というタイトルでこれを表示したいのですが、デバッガがメタデータのメソッドに到達すると、メソッドのコードを見ることができません –

答えて

3

dllを使用している当事者にデバッグ情報(* .pdb)を渡すことはできません。

ただし、インターフェイスはコンパイラから実装を隠すためのものです。あなたはそれを変更することができ、それに依存しないので、プログラムはコンパイルされます。単一の実装をアクティブにした瞬間に、それをデバッグするのは非常に便利です。

インターフェイスは、物を抽象化する方法であり、物を隠すことや保護することではありません。

+0

私はこれをタイトルに表示します:[fromメタデータ]を表示し、デバッガがメタデータのメソッドに到達したときに、メソッドのコードを表示できません。 –

+2

@Samer_Azar * .pdbファイルを配信しないことで、ユーザにとってより困難にすることができます。しかし、彼はあなたのコードを完全に逆コンパイルすることができます。本当のセキュリティが必要な場合、唯一の方法は、*コードをあなたのユーザーに渡すことではなく、自分が管理する環境で実行できる何らかの種類のサービスをユーザーが呼び出せるようにすることです。 – nvoigt

1

私はこれがインタフェース付きのsecurity through obscurityではないアプローチではないと思います。

+0

[メタデータから]というタイトルで表示したいのですが、デバッガがメタデータのメソッドに到達すると、メソッドのコードを見ることができません –

1

@nvoigtが言ったように、あなたができる唯一のことは、dll/packageにシンボル(* .pdbファイル)を含めないことです。

ただし、管理コードを記述しているので、ReflectorやDotPeekなどのマネージコード逆コンパイラツールを使用すると誰でも簡単にコードを検査できます。

可能な解決策は、自分のしていることを見にくくするためにコードを難読化することですが、人々がそれを逆コンパイルするのを本当に防ぐことはできません。意志があるところ...

+0

私はこれをタイトルに表示します:[fromメタデータのメソッドに到達すると、メソッドのコードを表示することができません –

1

デバッグモードからコードを隠すことは決してできません。これを行う唯一の方法は、実行しているVisual Studioアプリケーションの範囲外でコードを実行することです。

FYI:プログラミングインターフェイスレベルでのコードの可視性を隠すという点で、派生メンバーを非表示にする 'new'キーワードや、クラス、プロパティのより基本的なさまざまな保護レベルおよび方法、例えば内部、保護など

+0

[メタデータから]というタイトルでこれを表示し、デバッガがメタデータのメソッドに到達すると、私はメソッドのコードを見ることができません –

関連する問題