Czesc mam wrazenie ze robie cos nie tak w C# bo kompilator robi sobie ze mnie jaja ale do rzeczy w moim repo duzo funkcji wyglada tak:
public CommonModel GetLocations(IModelWithCurrentUser<xyz> model)
{
var sqlParameters = SqlHelpers.GetReportSqlParameters(model);
var outputParameters = new Dictionary<string, object>() { { "TotalCount", default(int) } };
var result = _queryExecutor.QueryWithOutputParameters<Locations>(PermissionsQueries.GetLocations, sqlParameters, outputParameters);
var totalCount = Convert.ToInt32(outputParameters["TotalCount"]);
return RepositoryConverter.ToCommonDSModel(result, model.Content, totalCount);
}
Chcialem napisac generyka by kod sie nie powtarzal:
public CommonModel GetSqlReport<T>(IModelWithCurrentUser<xyz> model, string queryName)
{
var sqlParameters = SqlHelpers.GetReportSqlParameters(model);
var outputParameters = new Dictionary<string, object>() { { "TotalCount", default(int) } };
var result = _queryExecutor.QueryWithOutputParameters<T>(queryName, sqlParameters, outputParameters);
var totalCount = Convert.ToInt32(outputParameters["TotalCount"]);
return RepositoryConverter.ToCommonDSModel(result, model.Content, totalCount);
}
Problem jest taki ze metoda ToCommonDSModel jest przeciazana po typie listy w 1 parametrze na zasadzie:
public static CommonModel ToCommonDSModel(List<Roles> data, xyz dtoModel, long itemsCount)
public static CommonModel ToCommonDSModel(List<Locations> data, xyz dtoModel, long itemsCount)
public static CommonModel ToCommonDSModel(List<abc> data, xyz dtoModel, long itemsCount)
Finalnie dostaje blad bo on niestety probuje rzutowac list<T> na jakis typ ktory wystepuje w metodzie ToCommonDSModel. Wujek google milczy na temat wiec wydaje mi sie ze robie cos zle :/. Moje pytanie jest proste czy idzie w jakis sensowny sposob napisac generyka tak by pozbyc sie tego powtarzajacego kodu z repo?
Blad:
cannot convert from 'System.Collections.Generic.List<T>' to 'System.Collections.Generic.List<Roles>'