Я попытался использовать пример формы 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();
}
}
}
}