下面是一些代码,严重降低版本我有如何减少使用lambda参数时的类型声明?
public class DataInfo<T>
{
public DataInfo(string description, Func<T, object> funcToGetValue)
{
this.description = description;
this.funcToGetValue= funcToGetValue;
}
public readonly string description;
public readonly Func<T, object> funcToGetValue;
}
public class DataType1
{
public int fieldA { get; set; }
public string fieldB { get; set; }
}
public class CurrentUse
{
static List<DataInfo<DataType1>> data1 = new List<DataInfo<DataType1>>()
{
new DataInfo<DataType1>("someStuff", data => data.fieldA),
new DataInfo<DataType1>("someOtherStuff", data => data.fieldB)
};
}
(有很多种类,而且不用担心并非一切都是公众确实!)
这是工作,是OK尽管如此,但事实是我不得不继续重复new DataInfo<DataType1>
使我困扰。
我试图创建DataInfo的非通用辅助优化版本为我创建的对象为使
public class DataInfo
{
public static DataInfo<T> Create<T>(string description, Func<T, object> func)
{
return new DataInfo<T>(description, func);
}
}
public class DesiredUse
{
static List<DataInfo<DataType1>> data1 = new List<DataInfo<DataType1>>()
{
DataInfo.Create("someStuff", data => data.fieldA),
DataInfo.Create("someOtherStuff", data => data.fieldB)
};
}
但是,这并不因为它的工作编译器无法解析FIELDA & fieldB,因为它不能推断出类型数据的。
任何想法如何摆脱重复的类型信息?我不介意做修改,只要我结束了DataInfos
列表
感谢乔恩,这工作太棒了! – Argos 2009-06-03 13:42:50