我在类似于以下内容的字典中有数据:
“键1”:“数据1”,
“键2”:“数据2”,
“键3”:“数据3”,
和一个班级
public class OuputClass
{
public string Field1 { get; set; }
public string Field2 { get; set; }
}
使用lambda,我希望能够轻松地为每个属性映射键名称并创建传入的类的新实例。
var result = MapData<Class1>(x => x.Field1 = "key 1", x.Field2 = "key 3")
在MapData函数中,我希望能够处理在函数中传递的2个属性,并返回带有属性集的OutputClass的新实例。 (Field1 =“数据1”,Field2 =“数据3”)
我已经研究过使用Func和IQueryable,但似乎无法使其正常工作
感谢您的帮助。
下面是ToObject函数的示例:
public static T ToObject<T>(Func<T, IQueryable> mapper) where T : new()
{
//code to create the class (more complex then this)
var data = new T();
//if mapper needed then loop through properties specified and use string mapped to each property
foreach (var item in .....)
{
//code to get value needed to set property
var mappedstring = ...... //get string mapped to property
var newpropvalue = ...... //use mapped string to access dictionary value;
//set property of instance
data.... = newpropvalue;
}
return data;
}
答案 0 :(得分:0)
您可以创建这样的方法:
public T MapData<T>(Func<T> func)
{
var res = func();
return res;
}
并调用这样的方法
var dic= new Dictionary<string, string>();
//Fill Dictionary
MapData<OuputClass>(() => new OuputClass { Field1 = dic["Key 1"] , Field2 = dic["Key 2"] });
希望对您有帮助