public void 委托_T2_返回值() { DelegateBuilder builder = CodeSyntax.CreateDelegate("T2") .WithAccess(MemberAccess.Public) .WithReturnType("string"); var result = builder.ToFormatCode(); #if Log _tempOutput.WriteLine(result); #endif Assert.Equal("public delegate string T2();", result); }
public void 委托_T1_类中() { DelegateBuilder builder = CodeSyntax.CreateDelegate("T1") .WithAccess(NamespaceAccess.Public) .WithReturnType("void"); var result = builder.ToFormatCode(); #if Log _tempOutput.WriteLine(result); #endif Assert.Equal("public delegate void T1();", result); }
public void 委托_T4_特性() { DelegateBuilder builder = CodeSyntax.CreateDelegate("T4") .WithAttributes(new string[] { @"[Test(""1"", ""2"", A = ""3"", B = ""4"")]" }) .WithAccess(MemberAccess.Public); var result = builder.ToFormatCode(); #if Log _tempOutput.WriteLine(result); #endif Assert.Equal(@"[Test(""1"", ""2"", A = ""3"", B = ""4"")] public delegate void T4();", result); }
public void 委托_T3_参数和返回值() { DelegateBuilder builder = CodeSyntax.CreateDelegate("T3") .WithAccess(MemberAccess.Public) .WithReturnType("string") .WithParams("string a"); var result = builder.ToFormatCode(); #if Log _tempOutput.WriteLine(result.WithUnixEOL()); #endif Assert.Equal("public delegate string T3(string a);", result.WithUnixEOL()); }
public void 委托_T5_泛型委托() { DelegateBuilder builder = CodeSyntax.CreateDelegate("Test") .WithAccess(MemberAccess.Public) .WithReturnType("T2") .WithGeneric(builder => { builder .WithCreate("T1").WithEnd() .WithCreate("T2").WithStruct().WithEnd() .WithCreate("T3").WithClass().WithEnd() .WithCreate("T4").WithNotnull().WithEnd() .WithCreate("T5").WithInterface("IEnumerable<int>", "IQueryable<int>").WithEnd(); }); var result = builder.ToFormatCode(); #if Log _tempOutput.WriteLine(result); #endif Assert.Equal(@"public delegate T2 Test<T1, T2, T3, T4, T5>() where T2 : struct where T3 : class where T4 : notnull where T5 : IEnumerable<int>, IQueryable<int>;", result); }
public void 约束() { DelegateBuilder builder = CodeSyntax.CreateDelegate("Test") .WithGeneric(b => { b.WithCreate("T1").WithStruct() .WithCreate("T2").WithClass() .WithCreate("T3").WithNotnull() .WithCreate("T4").WithUnmanaged() .WithCreate("T5").WithNotnull() .WithCreate("T6").WithBase("Enum") .WithCreate("T7").WithBase("IEnumerable<int>") .WithCreate("T8").WithTo("T2") .WithCreate("T9").WithClass().WithNew(); }); var result = builder.ToFormatCode(); #if Log _tempOutput.WriteLine(result.WithUnixEOL()); #endif Assert.Equal(@"delegate void Test<T1, T2, T3, T4, T5, T6, T7, T8, T9>() where T1 : struct where T2 : class where T3 : notnull where T4 : unmanaged where T5 : notnull where T6 : Enum where T7 : IEnumerable<int> where T8 : T2 where T9 : class, new();", result.WithUnixEOL()); }