私のソリューションの 1 つのプロジェクトがレポートを作成する巨大なアプリケーションがあります。.dll
プロジェクトをビルドせずに、ファイルを追加するだけで、新しいレポート (更新レポート) を追加したい。Assembly
と
について読みましAppDomain
たが、新しいレポートに新しい dll を追加し、実行時に古いレポートを更新する方法が本当に良い方法なのかわかりません。これが私の例です。最初のdllは必要ですが、2回目は必要ありません。最初の dll - 合計、2 番目 - 差し引かれます。
static void Main(string[] args)
{
try
{
//first domain
AppDomain domain = AppDomain.CreateDomain("MyDomain");
AssemblyDll asb1 = new AssemblyDll();
Console.WriteLine(asb1.AssemblyMethod(1));
AppDomain.Unload(domain);
Console.ReadKey();
//second domain
AppDomain newDomain = AppDomain.CreateDomain("myNewDomain");
AssemblyDll asb2 = new AssemblyDll();
Console.WriteLine(asb2.AssemblyMethod(2));
AppDomain.Unload(newDomain);
Console.ReadKey();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
public class AssemblyDll
{
public string AssemblyMethod(int version)
{
//loading .dll
Assembly assembly = Assembly.LoadFrom(@"../../../../Assembly/DynamicDLL" + version + ".dll");
Type type = assembly.GetType("DynamicDLL.Dynamic");
object instance = Activator.CreateInstance(type);
MethodInfo[] methods = type.GetMethods();
//invoke method
object result = methods[0].Invoke(instance, new object[] { 5, 3 });
return result.ToString();
}
}
私の.dllファイルは次のものから来ています:
namespace DynamicDLL
{
public class Dynamic
{
public int DynamicMethod(int a, int b)
{
return a + b;
//return a - b;
}
}
}