Chcę wymusić na mój bazowy kod z reguły niezmiennej następujący test.net niezmienne obiekty
[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");
}
}
przechodzi on na:
public class Entity
{
private int ID1;
public int ID
{
get { return ID1; }
}
}
ale nie ma na to:
public class Entity
{
public int ID { get; private set; }
}
Tutaj pojawia się pytanie "WTF?"
Test s.GetSetMethod (true)! = Null jest zbędny, ponieważ CanWrite == true gwarantuje istnienie setera. –
Prawda, "s.GetSetMethod (true)! = Null" jest równoważna z wartością CanWrite, więc jedna z nich jest zbędna. Usunąłem CanWrite, ponieważ chcę jasno określić testowanie na wartość null przed wyważeniem właściwości IsPrivate. – Joe