/// <summary> /// Obtiene el prototipo de una propiedad /// </summary> private MLNodesCollection GetPropertyPrototype(PropertyModel objProperty) { MLNodesCollection objColMLNodes = GetMethodPrototypeDefinition(objProperty, false, objProperty.GetMethod.ReturnType); // Argumentos if (objProperty.Arguments.Count > 0) { objColMLNodes.Add(Document.MLBuilder.GetSpan("[")); objColMLNodes.AddRange(GetArgumentsPrototype(objProperty)); objColMLNodes.Add(Document.MLBuilder.GetSpan("]")); } // Get y set objColMLNodes.Add(Document.MLBuilder.GetSpan("{")); objColMLNodes.AddRange(GetPropertyMethodPrototype(objProperty.Modifier, objProperty.GetMethod, "get")); objColMLNodes.AddRange(GetPropertyMethodPrototype(objProperty.Modifier, objProperty.SetMethod, "set")); objColMLNodes.Add(Document.MLBuilder.GetSpan("}")); // Devuelve el prototipo return(objColMLNodes); }
/// <summary> /// Obtiene el prototipo de una función /// </summary> private MLNodesCollection GetMethodPrototype(BaseMethodModel objMethod, bool blnIsAsync = false, TypedModel objReturnType = null) { MLNodesCollection objColMLNodes = GetMethodPrototypeDefinition(objMethod, blnIsAsync, objReturnType); // Añade los argumentos objColMLNodes.Add(Document.MLBuilder.GetSpan("(")); objColMLNodes.AddRange(GetArgumentsPrototype(objMethod)); objColMLNodes.Add(Document.MLBuilder.GetSpan(")")); // Devuelve el prototipo return(objColMLNodes); }
/// <summary> /// Obtiene los argumentos para un prototipo /// </summary> private MLNodesCollection GetArgumentsPrototype(BaseMethodModel objMethod) { MLNodesCollection objColMLNodes = new MLNodesCollection(); // Añade la cadena con los argumentos for (int intIndex = 0; intIndex < objMethod.Arguments.Count; intIndex++) { // Añade los nodos de los argumentos objColMLNodes.AddRange(GetArgumentData(objMethod.Arguments[intIndex])); // Añade un nodo de separación if (intIndex < objMethod.Arguments.Count - 1) { objColMLNodes.Add(Document.MLBuilder.GetSpan(",")); } } // Devuelve los argumentos return(objColMLNodes); }
/// <summary> /// Obtiene la definición (el prefijo) de un prototipo de un método /// </summary> private MLNodesCollection GetMethodPrototypeDefinition(BaseMethodModel objMethod, bool blnIsAsync, TypedModel objReturnType) { MLNodesCollection objColMLNodes = new MLNodesCollection(); // Añade los modificadores objColMLNodes.Add(Document.MLBuilder.GetSpan(GetModifierText(objMethod.Modifier))); if (blnIsAsync) { objColMLNodes.Add(Document.MLBuilder.GetSpan("async")); } if (objMethod.IsAbstract) { objColMLNodes.Add(Document.MLBuilder.GetSpan("abstract")); } if (objMethod.IsOverride) { objColMLNodes.Add(Document.MLBuilder.GetSpan("override")); } if (objMethod.IsSealed) { objColMLNodes.Add(Document.MLBuilder.GetSpan("sealed")); } if (objMethod.IsStatic) { objColMLNodes.Add(Document.MLBuilder.GetSpan("static")); } if (objMethod.IsVirtual) { objColMLNodes.Add(Document.MLBuilder.GetSpan("virtual")); } // Añade el valor de retorno if (objReturnType != null) { objColMLNodes.Add(GetLinkTypeName(objReturnType)); } // Añade el nombre del método objColMLNodes.Add(Document.MLBuilder.GetSpan(objMethod.Name)); // Añade los genéricos objColMLNodes.AddRange(GetMethodPrototypeGenerics(objMethod.TypeParameters)); // Devuelve la definición de prototipo return(objColMLNodes); }