我想做一个与大多数数据控件(MS,Telerek等)类似的组件:
myControl.DataSource = new List<myClass>();
mycontrol.NameField = "Name";
myControl.ValueField = "Value";
myControl.DataBind;
我有一些测试代码:
class myClass
{
public String Name
{
get { return _name; }
}
...
}
class control
{
public void process(object o)
{
Type type = o.GetType();
System.Reflection.PropertyInfo info = type.GetProperty("Name");
object val = info.GetValue(o,null);
System.Console.WriteLine(val.ToString());
}
public void bind(IEnumerable<object> list)
{
foreach (object o in list)
{
process(o);
}
}
}
class Program
{
static void Main(string[] args)
{
control c = new control();
List<myClass> data = new List<myClass>();
data.Add(new myClass("1 name", "first name", 1.0f));
c.bind(data.Cast<object>());
}
}
当然我想摆脱c.bind(data.Cast<object>());
。我应该将哪种类型作为参数传递给该函数?我试图传递Object,但是将参数转换回列表存在问题(控制应该是非常通用的,我不希望有任何固定的数据类型)。
提前谢谢。
答案 0 :(得分:0)
您可以尝试使用通用方法:
public void bind<T>(IEnumerable<T> list)
{
foreach (T item in list)
{
process(item);
}
}
一个简单的性能提示:考虑缓存PropertyInfo
实例,而不是在每次调用process()
时重新生成它。