C#:使用 ToString() 方法打印 POCO class 的全限定名而不影响任何两个字符串属性的串联
C#: Print POCO class's full qualified name without affect concatenation of any two string properties with the use of ToString() method
当我调用 class 对象的 ToString()
方法时,我有一个场景可以打印 Student
class 的学生(名字和姓氏)名称如下所示。
Console.WriteLine(new Student() { FirstName = "Sachin", LastName = "Tendulkar" }.ToString());
所以,我有 overrride
Student's POCO class
中的 ToString()
方法,如下所示
namespace TestSOF_Console
{
public class Student
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string StudentCode { get; set; }
public override string ToString()
{
return string.Format("{0} {1}", FirstName, LastName);
}
}
}
稍后,我有一个额外的查询来获取 Student
class 的完整限定名称作为 TestSOF_Console.Student
,而不影响使用 ToString()
方法的学生全名。
Console.WriteLine(new Student() { FirstName = "Sachin", LastName = "Tendulkar" }.ToString());
上面的代码将允许我选择我需要打印的内容(无论是 class 姓名还是学生姓名)...
有没有可能用ToString()
方法实现这两个目标?
在第一个大括号之前的引号内添加您想要的任何文字字符串,("TestSOF_Console.Student - {0} {1}", FirstName, LastName)
如果您需要使其成为可选的,只需重载 ToString() 方法即可:
public override string ToString()
{
return string.Format("{0} {1}", FirstName, LastName);
}
public string ToString(string header)
{
return string.Format(header + " - {0} {1}", FirstName, LastName);
}
要调用重载,只需将字符串作为参数添加到 ToString() 方法中 -
new Student() { FirstName = "Sachin", LastName = "Tendulkar" }.ToString("TestSOF_Console.Student")
不,您可以改为调用 GetType 方法。
在覆盖 .ToString()
方法之前,产生的值应该是 TestSOF_Console.Student
,所以我假设当您要求完整的限定名称时,这就是您的意思。
要获得该值,只需输出 typeof(TestSOF_Console.Student).FullName
。
所以,要想做你想做的事,你只需要这样写:
Console.WriteLine(typeof(TestSOF_Console.Student).FullName + " " + new Student() { FirstName = "Sachin", LastName = "Tendulkar" }.ToString());
当我调用 class 对象的 ToString()
方法时,我有一个场景可以打印 Student
class 的学生(名字和姓氏)名称如下所示。
Console.WriteLine(new Student() { FirstName = "Sachin", LastName = "Tendulkar" }.ToString());
所以,我有 overrride
Student's POCO class
中的 ToString()
方法,如下所示
namespace TestSOF_Console
{
public class Student
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string StudentCode { get; set; }
public override string ToString()
{
return string.Format("{0} {1}", FirstName, LastName);
}
}
}
稍后,我有一个额外的查询来获取 Student
class 的完整限定名称作为 TestSOF_Console.Student
,而不影响使用 ToString()
方法的学生全名。
Console.WriteLine(new Student() { FirstName = "Sachin", LastName = "Tendulkar" }.ToString());
上面的代码将允许我选择我需要打印的内容(无论是 class 姓名还是学生姓名)...
有没有可能用ToString()
方法实现这两个目标?
在第一个大括号之前的引号内添加您想要的任何文字字符串,("TestSOF_Console.Student - {0} {1}", FirstName, LastName)
如果您需要使其成为可选的,只需重载 ToString() 方法即可:
public override string ToString()
{
return string.Format("{0} {1}", FirstName, LastName);
}
public string ToString(string header)
{
return string.Format(header + " - {0} {1}", FirstName, LastName);
}
要调用重载,只需将字符串作为参数添加到 ToString() 方法中 -
new Student() { FirstName = "Sachin", LastName = "Tendulkar" }.ToString("TestSOF_Console.Student")
不,您可以改为调用 GetType 方法。
在覆盖 .ToString()
方法之前,产生的值应该是 TestSOF_Console.Student
,所以我假设当您要求完整的限定名称时,这就是您的意思。
要获得该值,只需输出 typeof(TestSOF_Console.Student).FullName
。
所以,要想做你想做的事,你只需要这样写:
Console.WriteLine(typeof(TestSOF_Console.Student).FullName + " " + new Student() { FirstName = "Sachin", LastName = "Tendulkar" }.ToString());