如何调用没有引用dll的c类库文件
本文关键字:dll 引用 文件 类库 何调用 调用 | 更新日期: 2023-09-27 18:24:42
我有一个名为(service.cs)的类库。
我有WCF服务,两者都在同一个解决方案中。在这里,我试图从wcf中的服务契约中调用服务类upload.uploading()方法并传递值。
namespace MyService
{
class MyService : IServiceContract
{
public void Insert(string Name)
{
if (core == true)
{
Upload(XmlFile);
}
else
{
}
}
这是示例类库文件
namespace Service
{
class upload
{
public void Uploading(string file)
{
console.writeline(file)
}
}
}
您的示例不是很清楚,但我猜您想调用类库中的Upload.Uploading()
方法。
最好的方法是创建一个接口,如下所示:
public interface IUploader
{
void Upload (string name);
}
并让外部类库实现它:
public class Uploader : IUploader
{
public void Upload(string name)
{
// Do the logic.
Console.WriteLine(name);
}
}
现在,在您的主程序中使用以下代码:
public void Insert (string filename)
{
var classLib = System.Reflection.Assembly.Load("MyClassLibrary.dll");
var type = classLib.GetType("MyClassLibrary.Uploader"); //FULL NAME with namespace.;
IUploader uploader = Activator.CreateInstance(type) as IUploader;
uploader.Upload(filename);
}
您正在做的是动态加载类库(第1行),通过反射动态获取其中类的类型(第2行),并创建它的实例(第3行)。
重要的是让它实现一个接口,比如IUploader,它是主程序已知的,这样它就知道如何处理它,如何调用它的Upload()方法等。
使用
using Service;
之前
namespace MyService
{
// ...
}
不确定你到底想做什么…标题说没有引用dll?Service.upload类位于何处?相同的解决方案?
如果是这样的话,您可以像Nikhil所说的那样使用using语句来引用名称空间。
示例:
using Service;
namespace MyService
{
class MyService : IServiceContract
{
public void Insert(string Name)
{
if (core == true)
{
var uploader = new Upload();
uploader.Uploading(XmlFile);
}
else
{
}
}
}
}
namespace Service
{
class Upload
{
public void Uploading(string file)
{
console.writeline(file)
}
}
}