コード例 #1
0
        public AttributeIntroductionDefinition(IAttributeIntroductionTarget target, AttributeDefinition attribute)
        {
            ArgumentUtility.CheckNotNull("target", target);
            ArgumentUtility.CheckNotNull("attribute", attribute);

            _target    = target;
            _attribute = attribute;
        }
コード例 #2
0
        public bool ShouldBeReplicated(AttributeDefinition attribute, IAttributeIntroductionTarget targetConfiguration, TargetClassDefinition targetClassDefinition)
        {
            ArgumentUtility.CheckNotNull("attribute", attribute);
            ArgumentUtility.CheckNotNull("targetConfiguration", targetConfiguration);
            ArgumentUtility.CheckNotNull("targetClassDefinition", targetClassDefinition);

            return(!attribute.IsCopyTemplate &&
                   (!CanInheritAttributesFromBase(targetConfiguration) ||
                    (!AttributeUtility.IsAttributeInherited(attribute.AttributeType) && !IsSuppressedByMixin(attribute, targetClassDefinition))));
        }
        public SuppressedAttributeIntroductionDefinition(IAttributeIntroductionTarget target, AttributeDefinition attribute,
                                                         AttributeDefinition suppressor)
        {
            ArgumentUtility.CheckNotNull("target", target);
            ArgumentUtility.CheckNotNull("attribute", attribute);
            ArgumentUtility.CheckNotNull("suppressor", suppressor);

            _target     = target;
            _attribute  = attribute;
            _suppressor = suppressor;
        }
コード例 #4
0
        private void ImplementAttributes(
            IMutableMember member, IAttributeIntroductionTarget targetConfiguration, TargetClassDefinition targetClassDefinition)
        {
            foreach (var attribute in targetConfiguration.CustomAttributes)
            {
                if (_attributeGenerator.ShouldBeReplicated(attribute, targetConfiguration, targetClassDefinition))
                {
                    _attributeGenerator.AddAttribute(member, attribute.Data);
                }
            }

            foreach (var introducedAttribute in targetConfiguration.ReceivedAttributes)
            {
                _attributeGenerator.AddAttribute(member, introducedAttribute.Attribute.Data);
            }
        }
コード例 #5
0
 private bool CanInheritAttributesFromBase(IAttributeIntroductionTarget configuration)
 {
     // Only methods and base classes can supply attributes for inheritance.
     return(configuration is TargetClassDefinition || configuration is MethodDefinition);
 }
 public AttributeIntroductionDefinitionBuilder(IAttributeIntroductionTarget target)
 {
     Target      = target;
     Suppressors = new List <AttributeDefinition> ();
 }