将对象插入字符串时(主要用于日志记录目的),需要显式序列化,否则您将得到:
<ProjectName>.<Class>
Run Code Online (Sandbox Code Playgroud)
或者就我而言
ConsoleApp1.Program+Person
Run Code Online (Sandbox Code Playgroud)
所以我制作了一个非常简单的控制台应用程序作为 PoC 来解决这个问题。
在此 PoC 中,我有一个抽象基类,它仅使用 重写 ToString 方法JsonSerializer
,因此我不需要每次想要记录/ConsoleWrite 我的对象时都进行序列化。
public abstract class BaseModel
{
public override string ToString()
{
return JsonSerializer.Serialize(this);
}
}
Run Code Online (Sandbox Code Playgroud)
这个抽象类应该被我的所有模型继承。这是整个控制台应用程序
static async Task Main(string[] args)
{
var a = new Person() { Name = "John", Lastname = "Doe" };
Console.WriteLine($"Hi, {a}.");
Console.ReadKey();
}
public class Person : BaseModel
{
public string Name { get; set; }
public string Lastname { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
运行 ConsoleWrites 上面的代码
Hi, {}. …
Run Code Online (Sandbox Code Playgroud)