【发布时间】:2012-06-20 18:07:55
【问题描述】:
我正在使用 System.Xml.Serialization 将对象序列化为 XML,这需要我有无参数的构造函数。
因此,我尝试使用对象初始化语法将值分配给某些属性,然后在将对象序列化为 XML 之前使用构造函数逻辑根据需要格式化这些值。
我的问题是构造函数在属性被赋值之前运行。下面是一个简化的例子:
class Program
{
static void Main(string[] args)
{
Foo myFoo = new Foo() { HelloWorld = "Beer", HelloWorldAgain = "More beer" };
Console.WriteLine(myFoo.HelloWorld);
Console.WriteLine(myFoo.HelloWorldAgain);
Console.ReadLine();
}
}
public class Foo : Bar
{
public string HelloWorld { get; set; }
public Foo()
{
Console.WriteLine("Foo Was Initialized");
Console.WriteLine(HelloWorld);
}
}
public abstract class Bar
{
public string HelloWorldAgain { get; set; }
public Bar()
{
Console.WriteLine("Bar was initialized");
Console.WriteLine(HelloWorldAgain);
}
}
这会产生以下输出:
如您所见,构造函数逻辑运行,然后属性被赋值。我需要这个以相反的方式工作。
这可能吗?
【问题讨论】:
-
您打算使用哪种预序列化格式?
-
我传入一个 ID,然后对数据库运行查询以提取各种信息,并将这些信息分配给自动属性,我认为这样做会更整洁在构造函数中
标签: c# constructor initialization