0

メンバーがインスタンス化されているにもかかわらず、常に null を返すように見える IList プロパティの使用に問題があります。

    private List<ModelRootEntity> _validTargets = new List<ModelRootEntity>();

    public IList<IModelRootEntity> ValidTargets
    {
        get
        {
            return _validTargets as IList<IModelRootEntity>;
        }
        protected internal set
        {
            if (value == null)
                _validTargets.Clear();
            else
                _validTargets = value as List<ModelRootEntity>;
        }
    }

ModelRootEntity実装しIModelRootEntityます。デバッグ中に両方の値を監視しましたが、メンバーは正のカウントを示していますが、プロパティは null のままです。

_validTargetsまた、プロパティ ゲッター内で例外を発生させて、とのカウント_validTargets as List<ModelRootEntity>が異なる場合にスローしようとしましたが、スローされませんでした。

見つかった質問[辞書がインスタンス化されているにもかかわらず、辞書のプロパティは常にnullです。これは似ているようですが、私の場合、これはシリアル化に関係なく発生するようです。

何か案は?

4

2 に答える 2

0

プロパティを 以外の値に設定するList<ModelRootEntity>と、as式が返さnullれ、プロパティは null になります。

于 2013-09-01T03:47:58.093 に答える
0

上記の@Nileshコメントのおかげで、答えが見つかりました。

交換:

private List<ModelRootEntity> _validTargets = new List<ModelRootEntity>();

と:

private List<IModelRootEntity> _validTargets = new List<ModelRootEntity>();

本当の問題を暴露しました。2 行目はコンパイルされません。次の投稿で理由が説明されています: C# newbie List<Interface> question

唯一の奇妙なことは、私が強制しようとした例外で、決してスローされず、「スロー」されました。

于 2013-09-01T16:41:07.197 に答える