Example #1
0
        public PropertySet(
            IPropertySet other,
            IListener listener,
            IPolicies policies,             
            ICompilerMessageBuilder messageProvider,
            int interfaceIndex)
        {
            if(ReferenceEquals(other, null))
                throw new ArgumentNullException(nameof(other));
            if (ReferenceEquals(listener, null))
                throw new ArgumentNullException(nameof(listener));
            if (ReferenceEquals(policies, null))
                throw new ArgumentNullException(nameof(policies));
            if (ReferenceEquals(messageProvider, null))
                throw new ArgumentNullException(nameof(messageProvider));

            this.InterfaceName = other.InterfaceName ?? policies.GenerateSurrogateInterfaceName(interfaceIndex);

            if (ReferenceEquals(other.InterfaceName, null))
                listener.Error(messageProvider.MissingInterfaceName(this.InterfaceName, interfaceIndex));

            if (false == policies.IsValidInterfaceName(this.InterfaceName))
                listener.Error(messageProvider.InvalidInterfaceName(this.InterfaceName, interfaceIndex));

            if (ReferenceEquals(other.Properties, null))
            {
                listener.Error(messageProvider.EmptyPropertiesList(this.InterfaceName, interfaceIndex));
                return;
            }

            int propertyIndex = 0;
            foreach (var property in other.Properties.OfType<IBasicProperty>())
            {
                this.Properties.Add(
                    new BasicProperty(property, listener, policies, messageProvider, propertyIndex++));
            }

            propertyIndex = 0;
            foreach (var property in other.Properties.OfType<IBlobProperty>())
            {
                this.Properties.Add(
                    new BlobProperty(property, listener, policies, messageProvider, propertyIndex++));
            }

            propertyIndex = 0;
            foreach (var property in other.Properties.OfType<ITableValueProperty>())
            {
                this.Properties.Add(
                    new TableValueProperty(property, listener, policies, messageProvider, propertyIndex++));
            }

            this.m_ixPropertyByName = this.Properties.ToDictionary(
                p => p.PropertyName,
                StringComparer.OrdinalIgnoreCase);
        }
 public TableValueProperty(
     ITableValueProperty other, 
     IListener listener, 
     IPolicies policies, 
     ICompilerMessageBuilder messageProvider, 
     int propertyIndex)
     : base(other, listener, policies, messageProvider, propertyIndex)
 {
     this.DataRowInterfaceName = other.DataRowInterfaceName ?? typeof(object).FullName;
     if (ReferenceEquals(other.DataRowInterfaceName, null))
         listener.Error(messageProvider.MissingDataRowInterfaceName(propertyIndex));
     else if(false == policies.IsValidInterfaceName(this.DataRowInterfaceName))
         listener.Error(messageProvider.InvalidDataRowInterfaceName(this.DataRowInterfaceName, propertyIndex));
 }