![]() |
1
14
当对象通过属性公开其值时,可以编写如下内容:
另一种解决方案是使用反射。此代码将检查字符串类型的属性:
|
![]() |
2
9
使用反射,您可以类似于:
|
![]() |
3
2
大概,你在某个地方有一份报告或表格,上面到处都是“空的”,而不是一个漂亮的、令人愉快的“”。 最好保持空值不变,并在适当的时候修改显示代码。因此,这样的一条线:
应该成为:
您可以根据需要将其功能化:
|
![]() |
4
0
你可以用反射。下面是一个具有一个嵌套级别的示例:
|
![]() |
5
0
你可以通过思考来做到这一点,而不会有太多的麻烦,我相信当我发表这篇文章时,将会有答案告诉你如何做到这一点。 但我个人不喜欢反射选项。 我更喜欢通过各种方法为对象的所有成员维护对象不变量。对于字符串成员,不变量通常不为空,有时也有最大长度要求(例如,对于数据库中的存储)。其他成员有其他类型的不变量。 第一步是创建一个检查为对象定义的所有不变量的方法。
然后在以任何方式操作对象的任何方法之后调用此函数。因为它是用
然后,您只需确保没有任何代码允许违反这些不变量。这意味着字符串字段的声明中需要有初始值设定项,或者需要在对象的所有构造函数中设置它们。 一个特殊的问题,可能也是引起这个问题的原因,是如何处理自动属性。
显然,可以在任何时候将其设置为空,对此您无能为力。 关于自动属性有两个选项。首先,你完全不能使用它们。这完全避免了这个问题。其次,您可以只允许任何可能的字符串值。也就是说,使用该属性的任何代码都必须期望为空、10 MB字符串或介于两者之间的任何内容。
即使使用反射选项移除空值,也必须知道何时对对象调用magic空值移除方法以避免
|
![]() |
6
0
+1坦纳修斯的回答。我用了这个答案,但稍微修改了一下。 首先,我只获取字符串属性,因此它不会循环遍历我的所有属性。其次,我将所有实体继承的BaseEntity类放在它中,这使它成为全局的,所以我不必将它放在所有实体上。
|
![]() |
A B · C#Excel自动调整列避免长文本时出错 4 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 4 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 4 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 4 月前 |