我试图使一个方法,将通过一个泛型对象的列表,并替换其类型为 string
的所有属性,这是 null
或替换为空。
有什么好办法吗?
到目前为止,我有这种... 外壳:
public static void ReplaceEmptyStrings<T>(List<T> list, string replacement)
{
var properties = typeof(T).GetProperties( -- What BindingFlags? -- );
foreach(var p in properties)
{
foreach(var item in list)
{
if(string.IsNullOrEmpty((string) p.GetValue(item, null)))
p.SetValue(item, replacement, null);
}
}
}
那么,我如何找到一个类型的所有属性:
类型为 string
有公共 get
有公共 set
?
我参加了一个测试班:
class TestSubject
{
public string Public;
private string Private;
public string PublicPublic { get; set; }
public string PublicPrivate { get; private set; }
public string PrivatePublic { private get; set; }
private string PrivatePrivate { get; set; }
}
以下内容不起作用:
var properties = typeof(TestSubject)
.GetProperties(BindingFlags.Instance|BindingFlags.Public)
.Where(ø => ø.CanRead && ø.CanWrite)
.Where(ø => ø.PropertyType == typeof(string));
如果我打印出这些属性的名称,我得到:
公众人士 PublicPrivate 私营机构
换句话说,我得到的两个属性太多了。
注意 : 这可能可以用一种更好的方式来完成... 使用嵌套的前伸和反射和所有这里... 但是如果你有任何伟大的替代想法,请让我知道,因为我想学习!