我试图使用示例表单http://blogs.msdn.com/b/davidebb/archive/2009/10/23/using-c-dynamic-to-call-static-members.aspx来消除代码重复。如何使用动态删除重复代码
if (Categories != null) {
foreach (var item in Categories)
{
if (item.ID != 0)
{
Category category = Category.Load(item.ID);
category.Name = item.Name;
category.Project = project;
category.Save();
}
else
{
if(!String.IsNullOrEmpty(item.Name))
{
Category category = new Category(project, item.Name);
category.Save();
}
}
}
}
if (Priorities != null)
{
foreach (var item in Priorities)
{
if (item.ID != 0)
{
Priority priority = Priority.Load(item.ID);
priority.Name = item.Name;
priority.Project = project;
priority.Save();
}
else
{
if (!String.IsNullOrEmpty(item.Name))
{
Priority priority = new Priority(project, item.Name);
priority.Save();
}
}
}
我试图做一些事情如下,但有错误消息
在部分不能调用非委托类型
if (!String.IsNullOrEmpty(item.Name))
{
dynamic newObject = typeDynamic(project, item.Name);
newObject.Save();
}
SaveObjects(typeof(Category), Categories.ToList(), project);
SaveObjects(typeof(Priority), Priorities.ToList(), project);
任何帮助请。
谢谢。
什么是错,我该如何纠正?
private void SaveObjects(Type type, dynamic currentItems, Project project)
{
dynamic typeDynamic = new StaticMembersDynamicWrapper(type);
foreach (var item in currentItems)
{
if (item.ID != 0)
{
dynamic classValues = typeDynamic.Load(item.ID);
classValues.Name = item.Name;
classValues.Project = project;
classValues.Save();
}
else
{
if (!String.IsNullOrEmpty(item.Name))
{
dynamic newObject = typeDynamic(project, item.Name);
newObject.Save();
}
}
}
}
它'的代码错误的代码 如果 { 动态NEWOBJECT = typeDynamic(项目,item.Name)(String.IsNullOrEmpty(item.Name)!); newObject.Save(); } – learning 2010-08-02 07:54:53