0

asp.netでPropertyInfo.SetValueを使用すると、stackoverflow例外がスローされます。私がこのコードを書くこと:

    for (int i = 0; i < rivalSeriesIDList.Count; i++)
    {
        cardb_series rivalSeries = seriesBll.GetSeriesInfoByID(rivalSeriesIDList[i].ToString());
        this.GetType().GetProperty("brandid" + (i + 1)).SetValue(this, rivalSeries.brand_id, null);
        this.GetType().GetProperty("seriesid" + (i + 1)).SetValue(this, rivalSeries.series_id, null);
    }

また、brandid+numberとseriesid+numberはaspx_pageのプロパティです。このような:

public int brandid1
{
    get
    {
        if (Request.Form["brandid1"] != null)
            return int.Parse(Request.Form["brandid1"]);
        if (Request["brandid1"] != null)
            return int.Parse(Request["brandid1"]);
        return 0;
    }
    set
    {
        brandid1 = value;
    }
}

コンソールアプリケーションでコードをテストすると、大丈夫です。しかし、Webアプリケーションでテストすると、スタックオーバーフロー例外が発生します。どうしてか分かりません。ウェブのために状態はありませんか?ありがとう。

4

1 に答える 1

2

プロパティを再帰的に呼び出すため、プロパティを直接呼び出す場合でも同じ例外が発生します

public int brandid1 <- this one
{
    get
    {
        if (Request.Form["brandid1"] != null)
            return int.Parse(Request.Form["brandid1"]);
        if (Request["brandid1"] != null)
            return int.Parse(Request["brandid1"]);
        return 0;
    }
    set
    {
       and this one -> brandid1 = value;
    }
}

何をしたいのかわかりませんが、これを試してみてください

private int _brandid1;
 public int brandid1 <- this one
    {
        get
        {
            if (Request.Form["brandid1"] != null)
                return int.Parse(Request.Form["brandid1"]);
            if (Request["brandid1"] != null)
                return int.Parse(Request["brandid1"]);
            return 0;
        }
        set
        {
           _brandid1 = value;
        }
    }
于 2009-10-14T05:22:28.397 に答える