我有一些这样的C#类:
public class Result_Splash
{
public string id;
public string version_code;
public string version_number;
}
public class Link_Splash
{
public int id;
public int app_version_id;
public string link;
public int provider_type;
public int order_download;
public int status;
}
以及类似的方法:
public void SomeClassDebug(???)
{
Debug.Log(???);
}
因此,我需要将类传递给我的方法并调试它们的字段。 有可能吗?
答案 0 :(得分:2)
Debug.Log();
将string
或object
(c#中所有内容的基类)用作参数。如果您传入object
,则Debug.Log
内部将使用该string
的{{1}}方法将其自动转换为ToString
。
问题是这里应该记录什么?
当然,您可以在object
内定义“临时”,例如
Debug.Log
所以您将看到public void SomeClassDebug(Result_Splash result)
{
Debug.Log(result.id);
}
的结果作为日志。
在我看来,更好的方法是在您的类中实现/重写result.id.ToString()
,以便自定义将根据您的需要生成的输出。 (我很懒,所以我将在小班教学中展示-另一个是您的作业)
ToString
我使用了$
string interpolation,这基本上是一种更好的书写方式,例如
public class Result_Splash
{
public string id;
public string version_code;
public string version_number;
public override string ToString()
{
// For example print the values as requested
return $"id: {id}, version_code: {version_code}, version_number: {version_number}";
}
}
但是您可以使用任何您想返回的值。
现在您可以轻松完成
return base.ToString() + " id: " + id + ", version_code: " + version_code + ", version_number: " + version_number;
当您调用它时,然后传入该类型的实例
public void SomeClassDebug(Result_Splash result)
{
Debug.Log(result);
}
这应该生成一个日志
id:您好,version_code =,version_number =世界!
答案 1 :(得分:0)
有几种选择。 例如,您可以在类中包含Debug方法,并使用Unity JSON序列化器(或NewtonSoft等)自动将所有字段名称和数据转换为JSON格式的文本:
public class BaseLoggableClass
{
public void Debug()
{
Debug.Log(ChosenJsonSerializer.Serialize(this));
}
}
public class Result_Splash : BaseLoggableClass
{
//... your fields here
}
// example of usage
var t = Result_Splash();
... some code ...
t.Debug();
您也可以使用 NLOG记录器,设置 JSON布局,并使用文件或任何目标来记录数据。
答案 2 :(得分:0)
这是将对象(或两个)传递给方法的方式。这是C#或任何面向对象的编程语言的绝对基础,因此,如果您不理解这一点,建议您先尝试学习这些基础。
public void SomeMethod() {
Link_Splash linkSplash = new Link_Splash {
id = "123",
};
Result_Splash resultSplash = new Result_Splash {
id = "456",
}
SomeClassDebug(resultSplash, linkSplash);
}
public void SomeClassDebug(Result_Splash result, Link_Splash link)
{
Debug.Log(result.id); // => 456
}