我有一个名为(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)
}
}
}
答案 0 :(得分:1)
您的示例不是很清楚,但我猜您想要调用类库中的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()方法等。
答案 1 :(得分:0)
使用
using Service;
之前的
namespace MyService
{
// ...
}
答案 2 :(得分:0)
不确定你到底要做什么......标题说没有参考dll? Service.upload类位于何处?相同解决方案
如果是这样,您可以使用using语句引用命名空间,如Nikhil所述。
示例:
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)
}
}
}