我有一个庞大的应用程序,其中我的解决方案的一个项目可以生成报告。我想添加新报告(更新报告)而不构建我的项目,而只是添加.dll
文件。我阅读了Assembly
和AppDomain
,但是我不知道这是为新报告添加新dll以及如何在运行时更新旧报告的好方法吗?这是我的示例,它需要我的第一个dll,而第二次则不需要。第一个dll-总和,第二个-扣除。
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;
}
}
}
如果要编写类似插件和类似插件的方法,则应查看MEF http://msdn.microsoft.com/zh-CN/library/vstudio/dd460648.aspx
MEF允许您动态使用任何程序集,甚至可以将dll拖放到文件夹中并从中建立MEF目录。
实际上是Visual Studio,内部使用MEF来实现可扩展性(插件...)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句