public void Store( ITypeInfoContainer typeInfoContainer, ProjectBindContainerXml projectXml ) { if (typeInfoContainer is null) { throw new ArgumentNullException(nameof(typeInfoContainer)); } if (projectXml is null) { throw new ArgumentNullException(nameof(projectXml)); } var sb = new StringBuilder(); foreach (var line in projectXml.GetXml().Split(new [] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries)) { sb.Append(SingleLineComment); sb.AppendLine(line); } var xml = sb.ToString(); typeInfoContainer.AddAdditionalFile(xml); }
private void DoGenerateXml( ITypeInfoContainer typeInfoContainer, IReadOnlyList <ClusterMethodBindings> clusterMethodBindings ) { if (typeInfoContainer is null) { throw new ArgumentNullException(nameof(typeInfoContainer)); } if (clusterMethodBindings is null) { throw new ArgumentNullException(nameof(clusterMethodBindings)); } #region create xml representation var clusterXmls = new List <ClusterBindContainerXml>(); foreach (var clusterMethodBinding in clusterMethodBindings) { var clusterType = clusterMethodBinding.ClusterType; var clusterTypeXml = clusterType.ToXml(); var methodBindXmls = new List <MethodBindContainerXml>(); foreach (var methodBinding in clusterMethodBinding.MethodBindings) { var methodDeclaration = methodBinding.Item1; var methodDeclarationXml = new MethodDeclarationInfoXml( methodDeclaration.ToXml(), methodDeclaration.Identifier.Text ); var methodBindXml = new MethodBindContainerXml( clusterTypeXml, methodDeclarationXml, methodBinding.Item2.ConvertAll( bc => new BindingXml( bc.UniqueUnstableIdentifier.ToString(), bc.TargetRepresentation, bc.BindFromTypes.ConvertAll(s => s.ToXml()).ToArray(), bc.BindToType.ToXml(), bc.ConstructorArguments.ToXml(), bc.Scope.ToString(), (int)bc.Scope, bc.IsConditional, bc.IsConventional, bc.ExpressionNode.ToXml() ) ).ToArray() ); methodBindXmls.Add(methodBindXml); } var clusterXml = new ClusterBindContainerXml( clusterTypeXml, methodBindXmls.ToArray() ); clusterXmls.Add(clusterXml); } var projectXml = new ProjectBindContainerXml( clusterXmls.ToArray() ); #endregion var meta = new BuiltinMeta(); meta.Store( typeInfoContainer, projectXml ); }