将所有字符串属性初始化为某个值
本文关键字:初始化 属性 字符串 | 更新日期: 2023-09-27 18:21:13
我有一些包含字符串的对象模型。其中一些属性是在运行时填充的,但有些属性不是,所以当我将这些对象映射回一些数据库字段时,一些字段会存储为NULL,而不仅仅是空字符串。为了解决这个问题,我在构造函数中将这些属性设置为= "";
。现在我有大约30个这样的字符串属性,所以有很多行只是将字符串属性设置为"。有没有办法说
"at object instantiation, set all strings to = "";
这样我就可以写了
public class MyModel : SomeSpecialTypeThatInitializesStrings {}
谢谢。
最好在SQL Server端处理此问题,为varchar列设置默认值
示例:
ALTER TABLE EMPLOYEE ADD COLUMNNAME VARCHAR(50) DEFAULT ''
是的。我在项目中编写了一个宏解析器,解析特定对象中宏的所有字符串属性。其思想是使用反射来迭代对象的属性,并在适当的属性上调用SetValue
方法。
(对我来说)今天的首要任务是为System.Type
:创建一个扩展方法
public static partial class TypeExtensionMethods
{
public static PropertyInfo[] GetPublicProperties(this Type self)
{
return self.GetProperties(BindingFlags.Public | BindingFlags.Instance).Where((property) => property.GetIndexParameters().Length == 0 && property.CanRead && property.CanWrite).ToArray();
} // eo GetPublicProperties
} // eo class TypeExtensionMethods
然后在对象上使用它(注意,ForEach
是一种扩展方法,但对于for each()
:来说只是一种捷径
obj.GetType().GetPublicProperties().ForEach((property) =>
{
if (property.GetGetMethod().ReturnType == typeof(string))
{
string value = (string)property.GetValue(obj, null);
if (value == null)
property.SetValue(obj, string.Empty, null);
}
}