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

C#需要构造函数快捷方式,c#,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 {

我有两门课:

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#来做呢?

是的

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

是的,您可以在另一个对象初始值设定项中包含一个对象初始值设定项:

       var r = new PersonViewModel 
       {
            PageMeta = { DataSource = "abc", TopicID = "def" }           
       };
这是因为您的
PersonViewModel
构造函数将
PageMeta
初始化为新实例。因此,这将使用
PageMeta
get
来初始化
PageMeta
属性的字段

如果您没有在
PersonViewModel
的构造函数中初始化
PageMeta
的新实例(或者如果
PageMeta
是一个返回副本的
struct
,因此getter不起作用),您可以通过
PageMeta
setter来访问它:

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

@Slaks-有没有什么方法可以在不替换原来的ctor的情况下做到这一点。此外,仍然会出现与TopicID Line相关的语法错误。这不会替换原始的ctor。即使它有一个
=
,它也不会替换现有的
PageMeta
实例。它没有给我任何语法错误。很抱歉。现在我看到了=谢谢你的帮助。PersonViewModel()应该是类还是方法?