У меня есть иерархия классов вроде следующего:общие типы и наследование спутанность
public class Country : MainObj
public class MainObj : BaseEntity
и у меня есть бизнес-логики классов, как следующее:
public class CountryBLL<TEntity> : CountryDLL<TEntity>,IBaseBLL<TEntity> where TEntity : Country
public class MainObjBLL<TEntity> : MainObjDLL<TEntity>, IBaseBLL<TEntity> where TEntity : MainObj
Теперь вещь, которую я хочу осуществить это функция, в которой я решаю, какой класс и bll я должен получить для этого, я добавил интерфейсы IBaseBLL для возвращаемого типа моей функции
Моя функция:
public static IBaseBLL<T> GetProperBllFromObjName<T>(string entityName)
{
IBaseBLL<T> baseBLL = null;
switch (entityName)
{
case "Country":
CountryBLL<Country> aa = new CountryBLL<Country>();
baseBLL = (IBaseBLL<T>) aa; //error line
break;
}
return baseBLL;
}
, когда я вызываю функцию так:
IBaseBLL<BaseEntity> mainBll = GetProperBllFromObjName("Country");
Но я не могу бросить исключение в строке, где я добавил комментарий «линия ошибки»
так, что я должен делать в этом случае , Единственное, что я хочу, это написать функцию, чтобы решить, какой bll мне следует использовать. (я не хочу менять bll declerations).
@FyodorX: Это вопрос C#, а не вопрос Java. –
@JeffreyBosboom Я изменил тег на C#; хороший звонок –
@JeffreyBosboom: Ой! Извините, я должен попробовать спать время от времени. – FyodorX