public static void Construir3(Tipo tipo)
 {
     Construir2(tipo);
     tipo.AgregarPropiedad(new Propiedad {
         Nombre = "ReferenciaObjetoDatosItem2", Tipo = tipo, Asociacion = Asociacion.Agregacion, Cardinalidad = Cardinalidad.Uno
     });
 }
        static HelperDiagrama()
        {
            Tipo tipo = new Tipo();

            tipo.AgregarPropiedad(new Propiedad {
                Nombre = "ruta", Tipo = Primarios.String
            });
            BuilderTipo.Construir2(tipo);
            _tipo = tipo;

            tipo = new Tipo();
            tipo.AgregarPropiedad(new Propiedad {
                Nombre = "ruta", Tipo = Primarios.String
            });
            BuilderTipo.Construir3(tipo);
            _tipox = tipo;

            ((Propiedad)_tipo.ObtenerPropiedad("ReferenciaObjetoDatos2")).Tipo = _tipo;
            //((Propiedad)_tipo.ObtenerPropiedad("ReferenciaObjetoDatosItem2")).Tipo = _tipo;
        }
        public static ITipo Construir(Tipo tipo)
        {
            tipo.Nombre = "ObjetoDatos";
            tipo.Alias  = "ObjetoDatos";
            tipo.Uri    = "Binapsis.Plataforma.Estructura";

            tipo.AgregarPropiedad(new Propiedad {
                Nombre = "atributoId", Tipo = Primarios.Integer
            });
            tipo.AgregarPropiedad(new Propiedad {
                Nombre = "atributoBoolean", Tipo = Primarios.Boolean
            });
            tipo.AgregarPropiedad(new Propiedad {
                Nombre = "atributoByte", Tipo = Primarios.Byte
            });
            tipo.AgregarPropiedad(new Propiedad {
                Nombre = "atributoChar", Tipo = Primarios.Char
            });
            tipo.AgregarPropiedad(new Propiedad {
                Nombre = "atributoDateTime", Tipo = Primarios.DateTime
            });
            tipo.AgregarPropiedad(new Propiedad {
                Nombre = "atributoDecimal", Tipo = Primarios.Decimal
            });
            tipo.AgregarPropiedad(new Propiedad {
                Nombre = "atributoDouble", Tipo = Primarios.Double
            });
            tipo.AgregarPropiedad(new Propiedad {
                Nombre = "atributoFloat", Tipo = Primarios.Float
            });
            tipo.AgregarPropiedad(new Propiedad {
                Nombre = "atributoInteger", Tipo = Primarios.Integer
            });
            tipo.AgregarPropiedad(new Propiedad {
                Nombre = "atributoLong", Tipo = Primarios.Long
            });
            tipo.AgregarPropiedad(new Propiedad {
                Nombre = "atributoSByte", Tipo = Primarios.SByte
            });
            tipo.AgregarPropiedad(new Propiedad {
                Nombre = "atributoShort", Tipo = Primarios.Short
            });
            tipo.AgregarPropiedad(new Propiedad {
                Nombre = "atributoString", Tipo = Primarios.String
            });
            tipo.AgregarPropiedad(new Propiedad {
                Nombre = "atributoUInteger", Tipo = Primarios.UInteger
            });
            tipo.AgregarPropiedad(new Propiedad {
                Nombre = "atributoULong", Tipo = Primarios.ULong
            });
            tipo.AgregarPropiedad(new Propiedad {
                Nombre = "atributoUShort", Tipo = Primarios.UShort
            });

            tipo.AgregarPropiedad(new Propiedad {
                Nombre = "ReferenciaObjetoDatos", Tipo = tipo, Asociacion = Asociacion.Composicion, Cardinalidad = Cardinalidad.Uno
            });
            tipo.AgregarPropiedad(new Propiedad {
                Nombre = "ReferenciaObjetoDatosItem", Tipo = tipo, Asociacion = Asociacion.Composicion, Cardinalidad = Cardinalidad.Cero_Muchos
            });

            return(tipo);
        }
        static Primarios()
        {
            Boolean = new Tipo {
                Nombre = "Boolean", Alias = "bool", EsTipoDeDato = true, Uri = "System"
            };
            Byte = new Tipo {
                Nombre = "Byte", Alias = "byte", EsTipoDeDato = true, Uri = "System"
            };
            Char = new Tipo {
                Nombre = "Char", Alias = "char", EsTipoDeDato = true, Uri = "System"
            };
            DateTime = new Tipo {
                Nombre = "DateTime", Alias = "DateTime", EsTipoDeDato = true, Uri = "System"
            };
            Decimal = new Tipo {
                Nombre = "Decimal", Alias = "decimal", EsTipoDeDato = true, Uri = "System"
            };
            Double = new Tipo {
                Nombre = "Double", Alias = "double", EsTipoDeDato = true, Uri = "System"
            };
            Float = new Tipo {
                Nombre = "Single", Alias = "float", EsTipoDeDato = true, Uri = "System"
            };
            Integer = new Tipo {
                Nombre = "Int32", Alias = "int", EsTipoDeDato = true, Uri = "System"
            };
            Long = new Tipo {
                Nombre = "Int64", Alias = "long", EsTipoDeDato = true, Uri = "System"
            };
            Object = new Tipo {
                Nombre = "Object", Alias = "object", EsTipoDeDato = true, Uri = "System"
            };
            SByte = new Tipo {
                Nombre = "SByte", Alias = "sbyte", EsTipoDeDato = true, Uri = "System"
            };
            Short = new Tipo {
                Nombre = "Int16", Alias = "short", EsTipoDeDato = true, Uri = "System"
            };
            String = new Tipo {
                Nombre = "String", Alias = "string", EsTipoDeDato = true, Uri = "System"
            };
            UInteger = new Tipo {
                Nombre = "UInt32", Alias = "uint", EsTipoDeDato = true, Uri = "System"
            };
            ULong = new Tipo {
                Nombre = "UInt64", Alias = "ulong", EsTipoDeDato = true, Uri = "System"
            };
            UShort = new Tipo {
                Nombre = "UInt16", Alias = "ushort", EsTipoDeDato = true, Uri = "System"
            };

            // construir tipo
            Tipo tipo = new Tipo {
                Nombre = "Tipo", Alias = "tipo", Uri = "Binapsis.Plataforma.Estructura.Metadata"
            };
            Tipo propiedad = new Tipo {
                Nombre = "Propiedad", Alias = "propiedad", Uri = "Binapsis.Plataforma.Estructura.Metadata"
            };

            tipo.AgregarPropiedad(new Propiedad {
                Nombre = "Alias", Alias = "alias", Tipo = String
            });
            tipo.AgregarPropiedad(new Propiedad {
                Nombre = "Base", Alias = "base", Tipo = tipo, Asociacion = Asociacion.Agregacion, Cardinalidad = Cardinalidad.Cero_Uno
            });
            tipo.AgregarPropiedad(new Propiedad {
                Nombre = "EsTipoDeDatos", Alias = "esTipoDeDatos", Tipo = Boolean
            });
            tipo.AgregarPropiedad(new Propiedad {
                Nombre = "Nombre", Alias = "nombre", Tipo = String
            });
            tipo.AgregarPropiedad(new Propiedad {
                Nombre = "Uri", Alias = "uri", Tipo = String
            });
            tipo.AgregarPropiedad(new Propiedad {
                Nombre = "Propiedades", Alias = "propiedades", Tipo = propiedad, Asociacion = Asociacion.Composicion, Cardinalidad = Cardinalidad.Cero_Muchos
            });

            propiedad.AgregarPropiedad(new Propiedad {
                Nombre = "Nombre", Alias = "nombre", Tipo = String
            });
            propiedad.AgregarPropiedad(new Propiedad {
                Nombre = "Alias", Alias = "alias", Tipo = String
            });
            propiedad.AgregarPropiedad(new Propiedad {
                Nombre = "Asociacion", Alias = "asociacion", Tipo = Byte
            });
            propiedad.AgregarPropiedad(new Propiedad {
                Nombre = "Cardinalidad", Alias = "cardinalidad", Tipo = Byte
            });
            propiedad.AgregarPropiedad(new Propiedad {
                Nombre = "Indice", Alias = "indice", Tipo = Integer
            });
            propiedad.AgregarPropiedad(new Propiedad {
                Nombre = "Tipo", Alias = "tipo", Tipo = tipo, Asociacion = Asociacion.Composicion, Cardinalidad = Cardinalidad.Uno
            });
            propiedad.AgregarPropiedad(new Propiedad {
                Nombre = "ValorInicial", Alias = "valorInicial", Tipo = Object
            });

            Tipo = tipo;
        }