2011-01-19 4 views
0

基本的なマスターページとコンテンツページがあり、コンテンツページのマスターページのプロパティまたはメソッドを使用する場合は、CodeContracts:null参照 'this.Master'のメソッドを呼び出す可能性があります

string something = this.Master.MasterPageFile; 

コードコントラクト静的解析は、と文句を言うでしょう:

warning : CodeContracts: Possibly calling a method on a null reference 'this.Master' 

は、どのように私は、マスターページにアクセスしたいときはいつでも、コードの契約は文句を停止して入手できますか?

R.

[編集]

は、このを見てみましょうか?私はshowFeedbackのを(呼び出したいたびに次の操作を実行する必要がありますする必要はありません

public partial class Manage : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     this.Master.ShowFeedback("Test.", true); 
    } 

    [ContractInvariantMethod] 
    private void ObjectInvariants() 
    { 
     Contract.Invariant(this.Master != null); 
    } 
} 

):

Contract.Assume(this.Master != null) 
this.Master.ShowFeedback("Test.", true); 

ん意味をなさない?

+0

あなたは 'this.Master'がnullでないことを保証するだろうか? –

答えて

0

あなたのクラスに不変として追加することができます

[ContractInvariantMethod] 
private void Invariants() 
{ 
    Contract.Invariant(Master != null); 
} 
+0

私はすでにそれを試みましたが、コードコントラクトは警告とともに戻ってきました:CodeContracts:invariant unproven:this.Master!= null – Richard

+0

どのメソッドの最後に?コンストラクタ? – porges

+0

例を示すために自分のコードを編集しました。奇妙なことは、時にはその呼び出しが警告を引き起こさないことです。しかし、私は電話をかける前に方法にアクセスすると、警告が確実に発せられます。混乱している。 – Richard

関連する問題