코드 중복을 제거하기 위해 예제 양식 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();
}
}
}
}
코드에서 코드가 실패합니다. if (! String.IsNullOrEmpty (item.Name)) { 동적 newObject = typeDynamic (project, item.Name); newObject.Save(); } – learning