voglio rispettare la mia base di codice regola immutabile con i seguenti test dioggetti immutabili .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");
}
}
Passa per:
public class Entity
{
private int ID1;
public int ID
{
get { return ID1; }
}
}
ma non lo fa per questo:
public class Entity
{
public int ID { get; private set; }
}
E qui va la domanda "WTF?"
Il test s.GetSetMethod (true)! = Null è superfluo perché CanWrite == true garantisce l'esistenza di un setter. –
Vero, "s.GetSetMethod (true)! = Null" equivale a CanWrite che è true, quindi uno di questi è ridondante. Ho rimosso CanWrite perché voglio essere esplicito sul test per null prima di dereferenziare la proprietà IsPrivate. – Joe