private IEnumerable<Violation> VerifyNotSettingProperty(VerificationContext context, TypeNode typeNode) { var violatingMethods = from method in typeNode.InboundFrom<MethodNode, ContainedInLink>() where method.OutboundLinks.OfType<SetPropertyLink>().Any() select method; foreach (var method in violatingMethods) { yield return new ImmutableTypeSetsPropertyOutsideOfConstructorViolation(typeNode, method); } }
private IEnumerable<Violation> VerifyNoWritableFields(VerificationContext context, TypeNode typeNode) { var violatingFields = from field in typeNode.InboundFrom<FieldNode, ContainedInLink>() where !field.Field.IsInitOnly select field; foreach (var field in violatingFields) { yield return new ImmutableTypeHasWritableFieldViolation(typeNode, field); } }
private IEnumerable<Violation> VerifyNoNotPrivatePropertySetters(VerificationContext context, TypeNode typeNode) { var violatingProperties = from property in typeNode.InboundFrom<PropertyNode, ContainedInLink>() where property.Property.CanWrite && !property.Property.SetMethod.IsPrivate select property; foreach (var property in violatingProperties) { yield return new ImmutableTypeHasNonPrivateSetterViolation(typeNode, property); } }