私が書いているいくつかの単体テストで使用しているエンティティの非常に単純なリストを作成しようとしていますが、コンパイラは静的コンテキストからインスタンス変数にアクセスできないと訴えています。私が見る限り、インスタンス変数だけがあります。このコレクションイニシャライザが静的になるのはなぜですか?
using System;
using System.Collections.Generic;
using EMP.Domain.Entities;
using NUnit.Framework;
namespace EMP.Domain.Tests.Repositories
{
[TestFixture]
public class AuditTrailRepositoryTests
{
private Guid orgId1 = Guid.NewGuid();
private IList<AuditTrail> fakeAuditData = new List<AuditTrail>
{
new AuditTrail
{
ChangeDate = new DateTime(2011, 1, 1),
EntityName = "Test",
OrganisationId = orgId1,
Username = "admin"
}
};
}
}
これは文字通り、この時点でクラス内のすべてのコードです。コンパイラはfakeAuditData
は、それが静的コンテキストで実行されていると思うする原因は何
Error 1 A field initializer cannot reference the non-static field, method, or property 'EMP.Domain.Tests.Repositories.AuditTrailRepositoryTests.orgId1'
ことを不平を言っていますか?私はインスタンスメソッドを追加し、コレクションとGuidの両方にアクセスできました。それで、初期化時にコレクションは静的であり、これは一度だけ初期化されることを意味しますか?
しかし、彼は作成されているインスタンスの型メンバーを参照していません。 – leppie
'this.orgId1'を実行すればうまくいくでしょうか? – leppie
'OrganisationId = orgId1'。そこに暗黙の「これ」があります。これが明示的に追加されても違いはありませんが、コンパイル時エラーですが、別のエラーです。 – Ani