1

単一のファクトリメソッドを提供するファクトリを構築しようとしています。この方法では、着信タイプがファクトリのTであるかどうかを確認します。

私が書いたものは単に機能していません。失敗の理由はわかっていると思いますが、キャストを正しく形成する方法がわかりません。

以下は私のコードです。この条件/キャスティングを形成する方法について何かアイデアはありますか?

    public T GetFeature(Type i_FeatureType, User i_UserContext)
    {
        T typeToGet = null;

        if (i_FeatureType is T) // <--condition fails here
        {
            if (m_FeaturesCollection.TryGetValue(i_FeatureType, out typeToGet))
            {
                typeToGet.LoggenInUser = i_UserContext;
            }
            else
            {
                addTypeToCollection(i_FeatureType as T, i_UserContext);
                m_FeaturesCollection.TryGetValue(typeof(T), out typeToGet);
                typeToGet.LoggenInUser = i_UserContext;
            }
        }

        return typeToGet;
    }
4

2 に答える 2

4

使用する:

 if (typeof(T).IsAssignableFrom(i_FeatureType))

それ以外の:

if (i_FeatureType is T)
于 2012-08-21T10:45:29.370 に答える
0

オブジェクトを「Type」オブジェクトと比較しています。

だから、代わりに

if(i_FeatureType is T)

試す

if(i_FeatureType == typeof(T))

于 2012-08-21T10:49:03.193 に答える