1

次のようなクラス階層があります。

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 宣言を変更したくありません)。

4

1 に答える 1