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()应该是类还是方法?