在必要字段后,再用循环生成数量可变的字段,如何C#编写
时间: 2024-09-19 19:11:05 浏览: 34
为什么我不建议在C#中用下划线_开头来表示私有字段
在C#中,如果你需要在类中创建一个数量可变的字段,并且这些字段是在特定条件下动态生成的,你可以考虑使用泛型集合(如List<T>、Dictionary<TKey, TValue>等),或者是属性加上getter和setter方法。这里是一个简单的示例,假设我们有一个基础的实体类,然后根据需要动态添加字段:
```csharp
public abstract class BaseEntity
{
public string CommonField { get; set; }
protected List<FieldInfo> DynamicFields = new List<FieldInfo>();
// 添加通用的getter和setter方法用于动态字段
public void AddDynamicField(string fieldName, Type fieldType)
{
FieldInfo field = this.GetType().GetField(fieldName, BindingFlags.Public | BindingFlags.Instance);
if (field != null)
{
DynamicFields.Add(field);
// 如果你想直接给字段赋值,可以在这儿添加一行代码,例如:
// field.SetValue(this, defaultValueOfType(fieldType));
}
}
// 获取动态字段值
public object GetDynamicFieldValue(string fieldName)
{
foreach (FieldInfo field in DynamicFields)
{
if (field.Name == fieldName)
return field.GetValue(this);
}
throw new ArgumentException($"Field '{fieldName}' not found.");
}
// 设置动态字段值
public void SetDynamicFieldValue(string fieldName, object value)
{
foreach (FieldInfo field in DynamicFields)
{
if (field.Name == fieldName)
field.SetValue(this, value);
break;
}
}
}
```
在这个例子中,`AddDynamicField`方法用于添加新的字段,`GetDynamicFieldValue`和`SetDynamicFieldValue`分别用于获取和设置这些字段的值。
阅读全文