필자가 작성한 일부 단위 테스트에 사용하는 엔티티의 아주 간단한 목록을 만들려고 시도하고 있지만 컴파일러가 정적 컨텍스트에서 인스턴스 변수에 액세스 할 수 없다는 불만을 제기하고 있습니다. 지금까지 볼 수 있듯이 인스턴스 변수 만 있습니다.이 컬렉션 이니셜 라이저가 정적이되는 이유는 무엇입니까?
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"
}
};
}
}
말 그대로이 클래스의 모든 코드입니다. 컴파일러는
이 무엇을Error 1 A field initializer cannot reference the non-static field, method, or property 'EMP.Domain.Tests.Repositories.AuditTrailRepositoryTests.orgId1'
fakeAuditData
가 정적 컨텍스트에서 실행 생각하는 원인이되는 것을 불평? 인스턴스 메서드를 추가하고 컬렉션과 Guid에 모두 액세스 할 수있었습니다. 그래서 초기화 할 때 콜렉션이 정적인가? 그리고 이것은 한번만 초기화된다는 것을 의미 하는가?
하지만 그는 생성되는 인스턴스의 유형 멤버를 참조하지 않습니다. – leppie
그럼,'this.orgId1'을 쓰면 작동할까요? – leppie
'OrganisationId = orgId1'. 거기에 암묵적인 '이'가 있습니다. 이것이 명시 적으로 추가되면 차이가 나지 않지만 컴파일 타임 오류는 있지만 다른 오류는 발생합니다. – Ani