uso propiedades genéricas en mi proyecto, pero no sé, ¿hay alguna desventaja de usarlas, por favor díganme un escenario, tienen una desventaja? Mi parte del código a continuación.¿Desventajas genéricas de la propiedad?
public class GenericResult<T>
{
public T Data { get; set; }
public bool IsSuccess { get; set; }
public string Message { get; set; }
}
public GenericResult<int> AddCategory(TCategory tCategory)
{
GenericResult<int> result = new GenericResult<int>();
//business logic validation,dont make sense,only example :)
if (tCategory.Name.Lenght > 100)
{
result.IsSuccess = false;
result.Message = "Category Name length is too long";
result.Data = 0;
}
//handle .net runtime error//may be database is not aviable.
try
{
result.Data = this.catalogRepository.AddCategory(tCategory);
result.IsSuccess = true;
}
catch (Exception ex)
{
result.Data = 0;
result.IsSuccess = false;
result.Message = ex.Message;
}
return result;
}
public GenericResult<IEnumerable<TCategory>> GetCategoryHierarchy(TCategory parentCategory)
{
GenericResult<IEnumerable<TCategory>> result = new GenericResult<IEnumerable<TCategory>>();
try
{
IEnumerable<TCategory> allCategories = catalogRepository.GetAllCategories();
result.Data = GetCategoryHierarchy(allCategories, parentCategory);
result.IsSuccess = true;
}
catch (Exception ex)
{
result.IsSuccess = false;
result.Data = null;
result.Message = ex.Message;
}
return result;
}
si AddCategory falla, ¿por qué devuelve una instancia? esto generalmente se considera una mala práctica. devuelve nulo para que sea claramente visible desde el exterior que algo falló. –
De acuerdo con Mario, ¡pero lanzar una excepción podría ser más expresivo para mostrar a todos que algo salió mal! – renatoargh
'null' no le da ningún mensaje. Lo que está devolviendo es una versión casera de un 'MayBe' que es un buen patrón en otros idiomas. –
CodesInChaos