基本就是根据编辑界面的控件来创建具体的实例类,不想一个个的赋值,其它的也不懂,界面参数多了 不好整,少了好说,所以写个东西来处理下
//filter是用来过滤哪些实体信息不用创建的
public virtual T Create<T>(Grid gv,List<string> filter)
{
Dictionary<string,string> dic = new Dictionary<string,string>();
foreach(var ctl in gv.Children)
{
if(ctl.GetType()==typeof(Label))
continute;
if(ctl.GetType()==typeof(TextBox))
{
TextBox tb = ctl as TextBox;
if(filter.Contains(tb.Name))
continute;
else
{
if(sting.IsNullOrEmpty(tb.Text))
{
tb.Focus();
return default(T);
}
else
{
dic.Add(tb.Name,tb.Text.Trim();
}
}
}
//else if()//其它类型的控件处理
}
//来给对象赋值
T ins = Activator.CreateInstnce<T>();
foreach(var item i ins.GetType().GetProperties())
{
string value = null;
if(dic.ContainsKey(item.Name))
{
dic.TryGetValue(item.Name,out value);
//value.GetType().FullName==item.PropertyType.FullName
//value需要根据实际的情况进行转换处理
item.SetValue(ins,value);
}
}
}