我有一个我创建的类(.cs文件)列表,我只想将此类中的所有公共变量设置为相同的false或true值,具体取决于另一个变量。
有一种简单的方法可以做到这一点,还是我必须遍历List
中的每个对象?
答案 0 :(得分:1)
以下是你可以做到这一点的一种方法......在你的课堂上,设定一个方法来设置你想要的任何值:
public class SomeClass
{
public bool Prop1 { get; set; }
public bool Prop2 { get; set; }
public bool Prop3 { get; set; }
public bool Prop4 { get; set; }
public void SetAllProps(bool theValue)
{
Prop1 = theValue;
Prop2 = theValue;
Prop3 = theValue;
Prop4 = theValue;
}
}
然后使用List
这样:
List<SomeClass> listOfClasses = new List<SomeClass>();
您可以设置所有值,如:
listOfClasses.ForEach(x => x.SetAllProps(true));
答案 1 :(得分:0)
您可以在类中创建一个公共方法,该方法使用相同的值更新每个变量。你可以为列表中的每个项目调用方法。
要更新方法中的所有局部变量,您可以使用像
这样简单的东西 var1 = var2 = var3 = var4 = true;
答案 2 :(得分:0)
使用Reflection
var list = new List<object>() { new TestDataClass(), new TestDataClass() };
foreach (var instance in list)
SetObjectProperties(instance, true);
public class TestDataClass
{
public int A { get; set; }
public bool B { get; set; } // Only set this property
public DateTime C { get; set; }
public bool D { get { return false; } }
private bool E { get; set; }
}
public void SetObjectProperties<T>(object target, T value)
{
var propInfos = target.GetType().GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);
foreach (var propInfo in propInfos.Where(i => i.PropertyType == typeof(T) && i.GetSetMethod() != null))
{
propInfo.SetValue(target, value, null);
}
}