私のプロジェクトの一部であるいくつかのクラスライブラリを使用するプロジェクトがあります。最初にAssemblyAがロードされ、次にAssemblyBがロードされます。現在のドメインにアセンブリロードを強制する正しい方法
var x = typeof(AssemblyB.AssemblyB_Type);
:AssemblyAでAssemblyAは、そのためのアセンブリをロードするために、AssemblyBがCurrentDomainにまだロードされていない、ことを行おうとするときは、次の
var assemblies = AppDomain.CurrentDomain.GetAssemblies();
var assemblyB = assemblies
.Where(x=>x.GetName() == "AssemblyB")
.First();
var type = assemblyB.GetType("AssemblyB_Type");
は、残念ながら私は、次の不必要なことをやってるんコードがあります
コンパイラは、私はそれ以外の場合は動作しませんということを説明する言葉を見つけることができませんけれども、このラインは、必要とされていないことを警告表示されるので、質問は次のようになり、どのように正しく(風水的に)アセンブリを強制します余分な役に立たない配管をせずにCurrentDomainにロード
だけAssembly.Load()を使用します。または、CLRにアセンブリを自動的にロードさせるには、var type = typeof(NamespaceNameInAssemblyB.AssemblyB_Type)を使用します。 –
私は少し混乱していると思います。 typeof(AssemblyB.AssemblyB_Type)を実行できるのであれば、なぜassemblyB.GetType( "AssemblyB_Type")を実行する必要がありますか? –
サードパーティのJIntライブラリ(JavaScriptインタープリタ)があります。 JavaScriptソース内からCLR型をバインドすることができます。まず、それは(AppDomain.CurrentDomain.GetAssembliesを使用しています)し、それは私のアセンブリがC#のコードに触れていなかった場合、それはCurrentDomainにロードされていないとJavaScriptからアクセスすることはできませんされ、そのアセンブリ内の適切なタイプを検索しようと... – Lu4