// PUBLIC CONSTRUCTORS //////////////////////////////////////////////
        #region Constructors
        public ApiCollectionType(IApiType apiItemType,
                                 ApiTypeModifiers apiItemTypeModifiers)
        {
            Contract.Requires(apiItemType != null);

            this.ApiItemTypeResolver  = new ApiSimpleTypeResolver(apiItemType);
            this.ApiItemTypeModifiers = apiItemTypeModifiers;
        }
예제 #2
0
        // PUBLIC METHODS ///////////////////////////////////////////////////
        #region Factory Methods
        public static ApiCollectionType CreateApiCollectionType(IApiType apiItemType,
                                                                ApiTypeModifiers apiItemTypeModifiers)
        {
            Contract.Requires(apiItemType != null);

            var apiCollectionType = new ApiCollectionType(apiItemType,
                                                          apiItemTypeModifiers);

            return(apiCollectionType);
        }
        // PUBLIC CONSTRUCTORS //////////////////////////////////////////////
        #region Constructors
        public ApiRelationship(IApiProperty apiProperty,
                               ApiRelationshipCardinality apiCardinality,
                               IApiType apiRelatedType)
        {
            Contract.Requires(apiProperty != null);
            Contract.Requires(apiRelatedType != null);

            this.ApiProperty            = apiProperty;
            this.ApiCardinality         = apiCardinality;
            this.ApiRelatedTypeResolver = new ApiSimpleTypeResolver(apiRelatedType);
        }
예제 #4
0
        public static ApiRelationship CreateApiRelationship(IApiProperty apiProperty,
                                                            ApiRelationshipCardinality apiCardinality,
                                                            IApiType apiRelatedType)
        {
            Contract.Requires(apiProperty != null);

            var apiRelationship = new ApiRelationship(apiProperty,
                                                      apiCardinality,
                                                      apiRelatedType);

            return(apiRelationship);
        }
예제 #5
0
        // PUBLIC CONSTRUCTORS //////////////////////////////////////////////
        #region Constructors
        public ApiProperty(string apiName,
                           string apiDescription,
                           IApiType apiType,
                           ApiTypeModifiers apiTypeModifiers,
                           string clrName)
        {
            Contract.Requires(apiName.SafeHasContent());
            Contract.Requires(apiType != null);
            Contract.Requires(clrName.SafeHasContent());

            this.ApiName          = apiName;
            this.ApiDescription   = apiDescription;
            this.ApiTypeResolver  = new ApiSimpleTypeResolver(apiType);
            this.ApiTypeModifiers = apiTypeModifiers;
            this.ClrName          = clrName;
        }
예제 #6
0
        public static ApiProperty CreateApiProperty(string apiName,
                                                    string apiDescription,
                                                    IApiType apiType,
                                                    ApiTypeModifiers apiTypeModifiers,
                                                    string clrName)
        {
            Contract.Requires(apiName.SafeHasContent());
            Contract.Requires(apiType != null);
            Contract.Requires(clrName.SafeHasContent());

            var apiProperty = new ApiProperty(apiName,
                                              apiDescription,
                                              apiType,
                                              apiTypeModifiers,
                                              clrName);

            return(apiProperty);
        }
예제 #7
0
        public void VisitApiType(IApiType apiType, int depth)
        {
            Contract.Requires(apiType != null);

            this.AddIndentToString(depth);

            var apiTypeKind = apiType.ApiTypeKind;

            switch (apiTypeKind)
            {
            case ApiTypeKind.Collection:
            {
                break;
            }

            case ApiTypeKind.Enumeration:
            {
                var apiEnumerationType = (IApiEnumerationType)apiType;
                var description        = apiEnumerationType.ToString();
                this.AddDescriptionToString(description);

                var apiEnumerationValues = apiEnumerationType.ApiEnumerationValues.Cast <ApiEnumerationValue>();
                foreach (var apiEnumerationValue in apiEnumerationValues)
                {
                    apiEnumerationValue.Accept(this, depth + 1);
                }

                break;
            }

            case ApiTypeKind.Scalar:
            {
                var description = apiType.ToString();
                this.AddDescriptionToString(description);
                break;
            }

            case ApiTypeKind.Object:
            {
                var apiObjectType = (IApiObjectType)apiType;
                var description   = apiObjectType.ToString();
                this.AddDescriptionToString(description);

                var apiProperties = apiObjectType.ApiProperties.Cast <ApiProperty>();
                foreach (var apiProperty in apiProperties)
                {
                    apiProperty.Accept(this, depth + 1);
                }

                var apiIdentity = (ApiIdentity)apiObjectType.ApiIdentity;
                apiIdentity?.Accept(this, depth + 1);

                var apiRelationships = apiObjectType.ApiRelationships.Cast <ApiRelationship>();
                foreach (var apiRelationship in apiRelationships)
                {
                    apiRelationship.Accept(this, depth + 1);
                }

                break;
            }
            }
        }
        // PUBLIC CONSTRUCTORS //////////////////////////////////////////////
        #region Constructors
        public ApiSimpleTypeResolver(IApiType apiType)
        {
            Contract.Requires(apiType != null);

            this.ApiType = apiType;
        }
예제 #9
0
 public ApiTypeWriter(DiffItem item, bool expandable)
 {
     this.item  = item;
     Expandable = expandable;
     api        = item.Item as IApiType;
 }
예제 #10
0
 public ApiTypeWriter(DiffItem item, bool expandable)
 {
     _item      = item;
     Expandable = expandable;
     _api       = (item.Item as IApiType) !;
 }