假设有一个具有特定属性的类:
class C {
public int property { set; get; }
}
我想通过另一个类中的类成员传递这个属性。显而易见的解决方案是:
class D {
private C c = new C();
public int property {
set { c.property = value; }
get { return c.property; }
}
}
有一些简化的语法吗?
有条件的:
public int property => c;
甚至可能具有更改访问级别的能力,就像对默认属性所做的那样(没有明确的状态字段)。
类可以这样写
这些表达式
set => c.property = value;
称为表达式体函数成员,出现在 C# 6 版本中。没有这样的代表团。
如果你需要拉出一个嵌套对象的所有属性,那么你有两种方法:
通过属性直接提供对嵌套对象的访问。你失去了控制,但代码是干净的。
从嵌套对象继承。这通常是完全不正确的(注意 is-a 关系),但从语言的角度来看,您会得到所需的行为。没有控制,架构是可疑的,但这是最短的选择。
如果您需要拉出一些属性,而隐藏其他所有内容很重要,那么有以下选项:
不要偷懒,手动做所有事情。已经向您推荐了 C# 7 中的简化语法。这种方法使您可以最大程度地控制安全性和体系结构,但也是最冗长的。
为接口分配必要的属性,在嵌套对象中实现它,将对象作为外部接口提供。控制力足够(可以投类型,但这是投机者的良心),架构和语法合理,代码整洁度一般。最妥协的选择。在缺点中,需要访问嵌套对象类,因为仍然没有扩展一切。