0

BlogEngine.NET を使用しており、BlogId を特定の Guid (blogIdstr) に設定する必要があります。デフォルトの blogId から変更する方法がわかりません。これは私が現在持っているコードですが、StackOverflowExceptionが発生しています...

これら2つは基本クラスにあります...

public virtual TKey Id { get; set; }

public Guid BlogId 
{ 
get 
   { 
       return BlogId; <-- Stack Overflow
   }

set
   {
       string blogIdstr = "FCA96EFB-D51C-4C41-9F85-3EEB9C50BDE7";
       Guid blogIdGuid = Guid.Empty;
       blogIdGuid = Guid.Parse(blogIdstr);
   }
}

そして、これはblog.csにあります...

public override Guid Id
{
get { return base.Id; }
set
{
    base.Id = value;
    base.BlogId = value;
}
}

blogId を設定して StackOverflowException を回避するにはどうすればよいですか? 前もって感謝します。

4

3 に答える 3

1

1 つ目は、BlogId で、BlogId を返します。これにより、BlogId を返す Getter が起動されます。ブーム、スタック オーバーフロー。BlogId の代わりに public getter で blogIdGuid を返します。

2 番目のものは最初のものに関連していると思いますが、これ以上のコードがなければ、すぐにはわかりません。

編集:おっと、コードを読み間違えました。ええ、_blogId というバッキング クラス レベルのプロパティを使用し、それをセッターで設定して、ゲッターで返します。

于 2013-10-22T17:40:50.950 に答える
0

バッキング変数を導入するだけです

private Guid _blogId;setメソッドでそのフィールドを必ず設定してください

public Guid BlogId 
{ 
get 
   { 
       return _blogId; 
   }

set
   {
       string blogIdstr = "FCA96EFB-D51C-4C41-9F85-3EEB9C50BDE7";
       Guid blogIdGuid = Guid.Empty;
       blogIdGuid = Guid.Parse(blogIdstr);

       _blogId = value;
   }
}
于 2013-10-22T17:40:49.963 に答える