public void SetIndexer(CodeIndexer indexer) { if (indexer == null) { throw new ArgumentNullException(nameof(indexer)); } if (InnerChildElements.Values.OfType <CodeIndexer>().Any() || InnerChildElements.Values.OfType <CodeMethod>().Any(static x => x.IsOfKind(CodeMethodKind.IndexerBackwardCompatibility)))
public CodeIndexerWriterTests() { writer = LanguageWriter.GetLanguageWriter(GenerationLanguage.CSharp, defaultPath, defaultName); tw = new StringWriter(); writer.SetTextWriter(tw); var root = CodeNamespace.InitRootNamespace(); parentClass = new CodeClass(root) { Name = "parentClass" }; root.AddClass(parentClass); indexer = new CodeIndexer(parentClass) { Name = "idx", }; indexer.IndexType = new CodeType(indexer) { Name = "string", }; indexer.ReturnType = new CodeType(indexer) { Name = "SomeRequestBuilder" }; parentClass.SetIndexer(indexer); }
public void IndexerInits() { var indexer = new CodeIndexer { Name = "idx", Description = "some description" }; indexer.IndexType = new CodeType { }; indexer.ReturnType = new CodeType { }; }
public void IndexerInits() { var root = CodeNamespace.InitRootNamespace(); var indexer = new CodeIndexer(root) { Name = "idx", Description = "some description" }; indexer.IndexType = new CodeType(indexer) { }; indexer.ReturnType = new CodeType(indexer) { }; }
public void ConvertsUnionTypesToWrapper() { var model = root.AddClass(new CodeClass { Name = "model", Kind = CodeClassKind.Model }).First(); var union = new CodeUnionType { Name = "union", }; union.AddType(new () { Name = "type1", }, new() { Name = "type2" }); var property = model.AddProperty(new CodeProperty { Name = "deserialize", Kind = CodePropertyKind.Custom, Type = union.Clone() as CodeTypeBase, }).First(); var method = model.AddMethod(new CodeMethod { Name = "method", ReturnType = union.Clone() as CodeTypeBase }).First(); var parameter = new CodeParameter { Name = "param1", Type = union.Clone() as CodeTypeBase }; var indexer = new CodeIndexer { Name = "idx", ReturnType = union.Clone() as CodeTypeBase, }; model.SetIndexer(indexer); method.AddParameter(parameter); ILanguageRefiner.Refine(new GenerationConfiguration { Language = GenerationLanguage.CSharp }, root); //using CSharp so the indexer doesn't get removed Assert.True(property.Type is CodeType); Assert.True(parameter.Type is CodeType); Assert.True(method.ReturnType is CodeType); Assert.True(indexer.ReturnType is CodeType); }
public static CodeMethod FromIndexer(CodeIndexer originalIndexer, CodeClass indexerClass, string methodNameSuffix, bool parameterNullable) { if (originalIndexer == null) { throw new ArgumentNullException(nameof(originalIndexer)); } if (indexerClass == null) { throw new ArgumentNullException(nameof(indexerClass)); } var method = new CodeMethod { IsAsync = false, IsStatic = false, Access = AccessModifier.Public, Kind = CodeMethodKind.IndexerBackwardCompatibility, Name = originalIndexer.PathSegment + methodNameSuffix, Description = originalIndexer.Description, ReturnType = new CodeType { IsNullable = false, TypeDefinition = indexerClass, Name = indexerClass.Name, }, OriginalIndexer = originalIndexer, }; var parameter = new CodeParameter { Name = "id", Optional = false, Kind = CodeParameterKind.Custom, Description = "Unique identifier of the item", Type = new CodeType { Name = "String", IsNullable = parameterNullable, IsExternal = true, }, }; method.AddParameter(parameter); return(method); }
public CodeIndexerWriterTests() { writer = LanguageWriter.GetLanguageWriter(GenerationLanguage.CSharp, DefaultPath, DefaultName); tw = new StringWriter(); writer.SetTextWriter(tw); var root = CodeNamespace.InitRootNamespace(); parentClass = new CodeClass { Name = "parentClass" }; root.AddClass(parentClass); indexer = new CodeIndexer { Name = "idx", SerializationName = "id" }; indexer.IndexType = new CodeType { Name = "string", }; indexer.ReturnType = new CodeType { Name = "SomeRequestBuilder" }; parentClass.SetIndexer(indexer); parentClass.AddProperty(new() { Name = "pathParameters", Kind = CodePropertyKind.PathParameters, Type = new CodeType { Name = "string" } }, new() { Name = "requestAdapter", Kind = CodePropertyKind.RequestAdapter, Type = new CodeType { Name = "string" } }); }