2

私はC# と .NET に関するこの本を読んでいて、たくさんのすばらしいことを学んでいます。著者がアセンブリを動的にロードし、そのアセンブリで型のインスタンスを作成することについて話している部分を読みました。

AS3 では、1 つのことを除いて、同じ種類のことを行うことができます。クラスのセットをコンパイルするのではなく、型の安全性をチェックするようにコンパイラに要求できます。例を次に示します。

//Defined in an external library
public class A {...}


//In my application, I tell the compiler to type check A, but not compile it
var a:A = new A();
a.whatever();

アプリケーション コードの実行時に、クラス A の定義を含む外部ライブラリを動的にロードし、それらの定義をアプリケーションの ApplicationDomain にロードすると、すべて正常に実行されます。反省はいらない!

これはC#で可能ですか?

つまり、C# コンパイラに一連のクラス (たとえば、ライブラリ内) に対して型チェックを行い、それらをコンパイルから除外するように指示できますか?

4

2 に答える 2

2

as3コードが何をしているのかについては100%明確ではありませんが、外部アセンブリが実装できる共通インターフェイスを(別のdllで)定義し、オブジェクトを作成するときに単純にキャストしたいようです:

Type type = loadedAssembly.GetType(fullyQualifiedName);
IMyInterface obj = (IMyInterface)Activator.CreateInstance(type):

で定義されたメソッドをobj簡単に使用できるようになりました。

あるいは、C# 4.0 では、dynamicキーワードはダックタイピングを提供します。

于 2009-07-04T09:15:01.133 に答える
1

私はちょうどこれを読みました

Action Script は動的言語であり、「特別ボーナス」として型チェック機能を提供し、静的型付き言語と同様に、コンパイル時にバグを検出するのに役立ちます。

C# は静的型付け言語であり、コンパイル時にすべての型チェックを行います。型チェックは「追加ボーナス」ではなく、不可欠な機能です。C# には常にリフレクションを使用して遅延バインドする機能があり、この機能は新しい動的キーワードによって改善されています。

ただし、C# が持つ遅延バインディング機能のいずれかを使用すると、型チェックは行われません。

于 2009-07-04T09:44:30.777 に答える