给出下面的代码
dynamic e = new ExpandoObject();
var d = e as IDictionary<string, object>;
for (int i = 0; i < rdr.FieldCount; i++)
d.Add(rdr.GetName(i), DBNull.Value.Equals(rdr[i]) ? null : rdr[i]);
有没有办法让它不区分大小写,所以给定字段名称 employee_name
e.Employee_name 和 e.employee_name 一样有效
似乎没有明显的方法,也许是 hack?
最佳答案
我一直在使用这个不区分大小写的“Flexpando”类(用于灵活的扩展)。
类似于Darin's MassiveExpando答案是它为您提供字典支持,但通过将其公开为一个字段,它可以避免为 IDictionary 实现 15 个左右的成员。
public class Flexpando : DynamicObject {
public Dictionary<string, object> Dictionary
= new Dictionary<string, object>(StringComparer.OrdinalIgnoreCase);
public override bool TrySetMember(SetMemberBinder binder, object value) {
Dictionary[binder.Name] = value;
return true;
}
public override bool TryGetMember(GetMemberBinder binder, out object result) {
return Dictionary.TryGetValue(binder.Name, out result);
}
}
关于c# - 如何将 ExpandoObject 的字典设置为不区分大小写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7760035/