public class Foo
{
public string Prop1 { get; set; }
public string Prop2 { get; set; }
public int Prop3 { get; set; }
}
class Program
{
static void Main(string[] args)
{
var foo = new Foo();
// Use reflection to get all string properties
// that have getters and setters
var properties = from p in typeof(Foo).GetProperties()
where p.PropertyType == typeof(string) &&
p.CanRead &&
p.CanWrite
select p;
foreach (var property in properties)
{
var value = (string)property.GetValue(foo, null);
if (value == null)
{
property.SetValue(foo, string.Empty, null);
}
}
// at this stage foo should no longer have null string properties
}
}
Cela sonne comme une chose assez étrange de faire. Je suis curieux de savoir ce que vous essayez d'accomplir avec cela? – andynormancx
D'un côté, vous pouvez envisager de définir vos chaînes NULL sur "String.Empty" au lieu de "". L'impact sur le monde réel est négligeable, mais pour des raisons de code efficace, le premier ne crée pas un nouvel objet. – Cranialsurge
Aussi, je suis d'accord avec andynormancx .... quel est votre objectif ici? – Cranialsurge