当使用组合方法时,一个类A引用类B,而类B有一些属性,是否有一种方法可以在每次初始化类B的一个属性时自动初始化类B?考虑所有内容都是公共的。
class A {
B MemberB { get; set; } = null; // Has to stay NULL by default
}
class B {
int Id { get; set; }
string Name { get; set; }
}
var instanceA = new A();
instanceA.MemberB.Name = "Demo"; // How to auto-instantiate MemberB without exception?
限制条件
- MemberB在实际使用其属性之前应保持为NULL,没有默认值
1.语法不应该有太大的变化,所以没有属性 Package 器检查NULL DynamicObject
只有在每次使用时不必将示例转换为dynamic
时才能使用
1条答案
按热度按时间smdnsysy1#
MemberB
(_memberB
)的后备字段,在get时自初始化:这可能会违反你的限制2,但它就是这样。
优化可能是使用
Lazy<T>
,但这需要比这里显示的更多的仪式,特别是考虑到属性的类型可能不应该改变,并且您仍然希望支持setter。