Ich mag mit folgendem Test.net Unveränderliche Objekte
[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");
}
}
es auf meiner Code-Basis unveränderliche Regel erzwingen geht für:
public class Entity
{
private int ID1;
public int ID
{
get { return ID1; }
}
}
aber nicht dafür:
public class Entity
{
public int ID { get; private set; }
}
Und hier geht die Frage "WTF?"
Der Test an GetSetMethod (true)! = Null ist überflüssig weil CanWrite == true die Existenz eines Setter garantiert. –
True, "s.GetSetMethod (true)! = Null" ist gleichbedeutend mit CanWrite ist wahr, so dass einer von ihnen redundant ist. Ich habe CanWrite entfernt, da ich explizite Informationen zum Testen auf Null geben möchte, bevor ich die IsPrivate-Eigenschaft dereferenziere. – Joe