我想避免在所有派生类中编写相同的代码行。我有以下结构:
using Newtonsoft.Json;
public class BaseClass
{
public string BaseProperty { get; set; }
public string Serialize() { return JsonConvert.SerializeObject(this); }
}
public class DerivedClass : BaseClass
{
public string DerivedProperty { get; set; }
}
从Serialize()
调用DerivedClass
时会发生什么? this
足够聪明,知道子对象包含额外的属性吗?或者,我是否仅限于在BaseClass
的每个孩子中编写相同的代码行?
答案 0 :(得分:1)
一些语言功能/行为很容易尝试...考虑以下代码:
public class A
{
public string WhoAmI => this.ToString();
}
public class B:A { }
您的问题等同于询问Console.WriteLine(new B().WhoAmI)
打印出来的内容?
好吧,如果有疑问,请运行它,看看......只需不到1分钟。
this
是对象的引用,与任何其他引用一样,只是有一个特殊名称。
考虑以下因素:
A a = new B();
现在您有B
类型引用A
引用的a
实例,但该实例仍为B
。在您的情况下,this
内BaseClass
只是BaseClass
对已创建实例的引用。不要将指向对象的引用类型与对象本身的类型混淆,它们不必相同。