我想创建一个控制台应用程序,它可以从API执行我的一些方法,以便人们更容易理解这些方法的工作方式。获取用户输入,然后显示输出数据的最佳方法是什么。
这是我到目前为止所做的:
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(content_frame, fragment).commit();
控制台:
public class SampleProgram
{
private readonly IRestClient _client;
private const string vTruckUrl = "api/trucktype";
public SampleProgram(string serviceUrl)
{
_client = new RestClient(serviceUrl);
}
public List<TruckType> GetVisionTruckType(string orderItemNumber)
//TruckType is a simple model containting two strings.
{
var request = new RestRequest(vTruckUrl, Method.GET)
{
RequestFormat = DataFormat.Json
};
request.AddParameter("orderItemNumber", orderItemNumber);
var response = _client.Execute<List<VisionTruckType>>(request);
if (response.StatusCode == System.Net.HttpStatusCode.OK)
return response.Data;
throw new Exception("The truck type and job name could not be queried.");
}
}
我的程序没有输出我想要的列表。我该如何解决这个问题?
答案 0 :(得分:1)
这是不正确的:
var type = _service.GetVisionTruckType(num);
Console.WriteLine(type.ToString());
默认情况下,ToString()
将在引用类型上返回类型本身的名称。 (毕竟,系统如何知道你所期望的那个任意类该类的字符串表示是什么?)
您需要从type
对象打印要打印的内容。 (这应该被称为types
,因为它是一个集合,顺便说一句。错误的命名会增加您遇到的困惑。)例如:
var type = _service.GetVisionTruckType(num);
foreach (var obj in type)
Console.WriteLine(obj.SomeProperty);
这会在该集合中的每个元素上打印SomeProperty
的值。
无论您想要打印什么,都取决于您。关键是C#只是通过调用ToString()
来了解你想要的东西,你必须明确告诉它。
相反,您可以在您控制的任何课程上覆盖 ToString()
:
public override string ToString()
{
// build and return what you want a string representation of this object to be
}
这将允许您在该类型的对象上一致地调用ToString()
并获得您期望的字符串表示。
答案 1 :(得分:1)
您需要迭代方法返回的列表项。
switch (methodNumber)
{
case "1":
Console.WriteLine("Please enter a valid order item number: ");
string num = Console.ReadLine();
List<TruckType> type = _service.GetVisionTruckType(num);
foreach (var item in type )
{ // this will only work if you override the ToString()
// method in the class TruckType
Console.WriteLine(item.ToString());
}
break;
}
如果您只想打印TruckType
的某些属性,则需要直接访问它们:
foreach (var item in type )
{
Console.WriteLine(item.SomeProperty.ToString());
}
Here有助于理解如何覆盖ToString()。如果要显示有关对象的所有信息,实际上很高兴。