![](/img/trans.png)
[英]How to use an object of a generic class inside a generic class in C#?
[英]How to pass and use a generic object in c#?
我有多個方法,每個方法都返回一個對象。
public objA myCall(string[] args)
{
webAPI myAPI = new webAPI();
returnData = myAPI.callApi("http://localhsot/api", args , "POST");
XmlSerializer serializer = new XmlSerializer(typeof(myObj));
using (TextReader reader = new StringReader(returnData))
{
objA result = (objA)serializer.Deserialize(reader);
return result;
}
}
和
public objB myCall(string[] args)
{
webAPI myAPI = new webAPI();
returnData = myAPI.callApi("http://localhsot/api", args , "POST");
XmlSerializer serializer = new XmlSerializer(typeof(myObj));
using (TextReader reader = new StringReader(returnData))
{
objB result = (objB)serializer.Deserialize(reader);
return result;
}
}
我想做的就是使用泛型將它們合並為一種方法。 這樣,我可以傳遞我想要返回的對象。 我以前從未使用過泛型,因此需要一些幫助。 這是我嘗試過的:
public T myCall<T>(ref T myObj, string[] args)
{
webAPI myAPI = new webAPI();
returnData = myAPI.callApi("http://localhsot/api", args , "POST");
XmlSerializer serializer = new XmlSerializer(typeof(myObj));
using (TextReader reader = new StringReader(returnData))
{
myObj result = (myObj)serializer.Deserialize(reader);
return result;
}
}
但是,當我將其放入Visual Studio時,我得到一個錯誤,說“ myObj”是一個變量,但像類型一樣使用。 如果您有此經驗並願意提供幫助,我將不勝感激。
你快到了
public T myCall<T>(string[] args)
{
webAPI myAPI = new webAPI();
returnData = myAPI.callApi("http://localhsot/api", args , "POST");
XmlSerializer serializer = new XmlSerializer(typeof(T));
using (TextReader reader = new StringReader(returnData))
{
T result = (T)serializer.Deserialize(reader);
return result;
}
}
然后通過將類型作為通用約束傳遞來調用它。
var result = myCall<objA>(someArguments);
objA
(也是我的觀點), objA
不是類型的好名字。
您應該從參數myObj
刪除並將其在方法主體中更改為T
如下所示
public T myCall<T>(string[] args)
{
webAPI myAPI = new webAPI();
returnData = myAPI.callApi("http://localhsot/api", args , "POST");
XmlSerializer serializer = new XmlSerializer(typeof(T));
using (TextReader reader = new StringReader(returnData))
{
T result = (T)serializer.Deserialize(reader);
return result;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.