需要C#构造函数快捷方式

时间:2011-11-03 14:30:39

标签: c#

我有两个班级:

public class PageMeta
{
    public PageMeta() { }
    public string DataSource { get; set; }
    public string TopicID { get; set; } 
    public string Title { get; set; }

}

public PersonViewModel()
{
    PageMeta = new PageMeta
    {
        Title = "Test"
    };
    public PageMeta PageMeta { get; set; }
}

使用以下代码创建这些代码:

var r = new PersonViewModel();
r.PageMeta.DataSource="abc";
r.PageMeta.TopicID="def";

在现实生活中,我的课程更复杂,这只是一个例子。我想要做的是将PersonViewModel的创建与DataSource和TopicID的设置结合起来。

var r = new PersonViewModel {
   PageMeta.DataSource="abc";
   PageMeta.TopicID="def";
}

有没有办法在C#中完成?

2 个答案:

答案 0 :(得分:5)

var r = new PersonViewModel {
    PageMeta = {
        DataSource = "abc",
        TopicID = "def"
    }
}

答案 1 :(得分:0)

是的,你可以在另一个对象初始化器中有一个对象初始化器:

       var r = new PersonViewModel 
       {
            PageMeta = { DataSource = "abc", TopicID = "def" }           
       };

这是有效的,因为您的PersonViewModel构造函数会将PageMeta初始化为新实例。因此,这会使用PageMeta的{​​{1}}初始化get属性的字段。

如果您没有在PageMeta的构造函数中初始化PageMeta的新实例(或PersonViewModelPageMeta返回副本,那么getter赢了“你工作”,你可以通过struct setter来访问它:

PageMeta