XAML 如何在不添加引用的情况下从另一个项目调用c#函数?

wooyq4lh  于 2022-12-16  发布在  C#
关注(0)|答案(1)|浏览(132)

有一个DLL名为customer.dll的C#.net库项目,它有一个类名为customer,函数名为show(),我想从另一个项目调用这个函数,但不想把引用添加到调用方项目中,这能做到吗?有没有C#.net类可以做到这一点?

q5lcpyga

q5lcpyga1#

可以,可以使用Assembly.LoadFile动态加载程序集

Assembly.LoadFile("c:\\somefolder\\Path\\To\\Code.dll");

然后,您需要使用Reflection来获取要调用的函数的方法信息,或者使用Dynamic关键字来调用它。

var externalDll = Assembly.LoadFile("c:\\somefolder\\Customer.dll");
var externalTypeByName = externalDll.GetType("CustomerClassNamespace.Customer");

// If you don't know the full type name, use linq
var externalType = externalDll.ExportedTypes.FirstOrDefault(x => x.Name == "Customer");

//if the method is not static create an instance.
//using dynamic 
dynamic dynamicInstance = Activator.CreateInstance(externalType);
var dynamicResult = dynamicInstance.show();

// or using reflection
var reflectionInstance = Activator.CreateInstance(externalType);
var methodInfo = theType.GetMethod("show");
var result = methodInfo.Invoke(reflectionInstance, null);

// Again you could also use LINQ to get the method
var methodLINQ = externalType.GetMethods().FirstOrDefault(x => x.Name == "show");
var resultLINQ = methodLINQ.Invoke(reflectionInstance, null);

相关问题