2016-04-25 7 views
0

これは私がこのエラーを取得し、これは私のテストC#の設定値

MockRepository mocks = new MockRepository(); 
     mocks.Stub<UserAction>(); 
     Game g = new Game(players, cardList); 
     Type stage = typeof(PhaseList); 
     FieldInfo stinfo = stage.GetField("stages", 
     BindingFlags.NonPublic | BindingFlags.Instance); 

     PhaseList p = new PhaseList(); 
     p.add(new DiscardPhase(players[0])); 
     p.add(new DiscardPhase(players[0])); 
     stinfo.SetValue(g, p); 
     g.processUserInput(0, mocks.Stub<UserAction>()); 

ある

private PhaseList stages; 

を設定する非公開の値である:

System.NullReferenceException: Object reference not set to an instance of an object. 

それがポイントこの行の内容:

stinfo.SetValue(g, p); 

なぜstinfo = nullであるのかわかりません。

誰でも手伝ってもらえますか?

+0

"これは私が設定したいプライベート値です" - * what *クラスのプライベート変数? – Mikanikal

答えて

3

PhaseListクラスの型を取得しようとしていて、内部にstagesという名前のプライベートフィールドを取得しようとしています。それは "ステージ"と呼ばれるフィールドを持っていない、私は仮定しているので、あなたはnullを得る。あなたがを行う

ているが、潜在的PhaseListクラスのインスタンスのいくつかクラスで「ステージ」という名前のフィールドです。

Type stage = typeof(Whatever_Class_Has_The_Stages_Field_In_It); 

FieldInfo stinfo = stage.GetField("stages", BindingFlags.NonPublic | BindingFlags.Instance); 
+0

ありがとう!あなたは正しいです – SwordW

+0

@SwordWようこそ。 –