次のようなクラス階層があります。
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 宣言を変更したくありません)。