Tengo los siguientes códigos y me gustaría escribirlos de forma que tenga una duplicación mínima de códigos.¿Cómo eliminar el código duplicado?
if (Categories != null)
{
bool flag=false;
foreach (dynamic usableCat in Category.LoadForProject(project.ID))
{
foreach (dynamic catRow in Categories)
{
if (usableCat.ID == catRow.ID)
flag = true;
}
if (!flag)
{
int id = usableCat.ID;
Category resolution = Category.Load(id);
resolution.Delete(Services.UserServices.User);
}
}
}
if (Priorities != null)
{
bool flag = false;
foreach (dynamic usableCat in Priority.LoadForProject(project.ID))
{
foreach (dynamic catRow in Priorities)
{
if (usableCat.ID == catRow.ID)
flag = true;
}
if (!flag)
{
int id = usableCat.ID;
Priority resolution = Priority.Load(id);
resolution.Delete(Services.UserServices.User);
}
}
}
Tenga en cuenta que la Categoría y la prioridad no tienen un tipo de base común o interfaz que incluya ID.
Asumo que no tiene acceso para cambiar las clases de prioridad o categoría ? – RCIX
En su ejemplo de código, está usando 'dynamic' donde parece que podría usar' var' (early-binding) en su lugar. Parece que lo que realmente quieres es usar 'dynamic' para obtener semántica de enlace tardío, en cuyo punto no importará que no haya un tipo de base común, de todos modos puedes usar el campo' ID'. (Es decir, parece que desea usar [pato escribiendo] (http://en.wikipedia.org/wiki/Duck_typing).) –
+1 para pato escribir :) – onof