나는 시험을 다음과 같이 내 코드베이스 불변의 규칙을 적용 할.NET 불변의 객체
[TestFixture]
public class TestEntityIf
{
[Test]
public void IsImmutable()
{
var setterCount =
(from s in typeof (Entity).GetProperties(BindingFlags.Public | BindingFlags.Instance)
where s.CanWrite
select s)
.Count();
Assert.That(setterCount == 0, Is.True, "Immutable rule is broken");
}
}
그것은을 위해 전달합니다
public class Entity
{
private int ID1;
public int ID
{
get { return ID1; }
}
}
하지만이를 위해하지 않습니다
public class Entity
{
public int ID { get; private set; }
}
그리고 여기에 "WTF?"라는 질문이 있습니다.
CanWrite == true는 setter의 존재를 보장하므로 s.GetSetMethod (true)! = null 테스트는 불필요합니다. –
사실, "s.GetSetMethod (true)! = null"은 CanWrite가 참인 것과 동일하므로 그 중 하나가 중복됩니다. IsPrivate 속성을 역 참조하기 전에 null 테스트를 명시 적으로 수행하고자하므로 CanWrite를 제거했습니다. – Joe