[英]Use typed variable for different classes in C#
我在C#app中有兩個ServiceReference( 通過VisualStudio生成 ):ServiceReference1和ServiceReference2。
兩者都有相同的方法和類名。 它們的接口在某些方法上有所不同,但我只想使用兩者都具有相同接口的方法。
如何動態使用它們?
例:
ServiceReference1.Client clnt1 = new ServiceReference1.Client();
ServiceReference2.Client clnt2 = new ServiceReference2.Client();
string result = "";
if (type == 1)
result = clnt1.calculate();
else
result = clnt2.calculate();
string result2 = "";
if (type == 1)
result2 = clnt1.calculate2();
else
result2 = clnt2.calculate2();
//and so on...
我正在尋找這樣的東西......
ServiceReference1.Client clnt = null;
if (type == 1)
clnt = new ServiceReference1.Client();
else
clnt = new (ServiceReference1.Client)ServiceReference2.Client();
string result = clnt.calculate();
string result2 = clnt.calculate2();
//and so on...
由於ServiceReference1.Client
擁有的所有的方法ServiceReference2.Client
(多一些),我認為這是可能的。 但它不起作用。
對clnt
變量使用var
也不起作用,因為客戶端是在類中全局定義的, var
只能在方法中使用。
我不知道你是如何生成這些的,但是大多數時候從Visual Studio生成代碼時,將類聲明為部分類是足夠聰明的。
public partial class ServiceReference1
{
public string Calculate()
{
// Implementation
}
}
public partial class ServiceReference2
{
public string Calculate()
{
// Implementation
}
}
如果是這種情況,您可以做的是將自己單獨的部分類文件添加到項目中以擴展它們。 在新文件中,您可以使這些類實現一個通用接口。
public partial class ServiceReference1 : IServiceReference
{
// Nothing needed here
}
public partial class ServiceReference2 : IServiceReference
{
// Nothing needed here
}
public interface IServiceReference
{
string Calculate();
}
然后你可以像這樣打電話給他們:
IServiceReference clnt = null;
if (type == 1)
clnt = new ServiceReference1.Client();
else
clnt = new ServiceReference2.Client();
string result = clnt.Calculate();
//and so on...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.