private static SyntaxKind ConvertToSyntaxKind(MemberImplementationModifier mod) { switch (mod) { case MemberImplementationModifier.Private: return(SyntaxKind.PrivateKeyword); case MemberImplementationModifier.Public: return(SyntaxKind.PublicKeyword); case MemberImplementationModifier.Virtual: return(SyntaxKind.VirtualKeyword); case MemberImplementationModifier.Override: return(SyntaxKind.OverrideKeyword); case MemberImplementationModifier.Static: return(SyntaxKind.StaticKeyword); case MemberImplementationModifier.Sealed: return(SyntaxKind.SealedKeyword); case MemberImplementationModifier.Protected: return(SyntaxKind.ProtectedKeyword); default: throw new ArgumentException(nameof(MemberImplementationModifier) + " arg is in an invalid state. Could not handle Value: " + mod.ToString(), nameof(mod)); } }
/// <summary> /// Converts <paramref name="modifiers"/> into a collection of Rosyln <see cref="SyntaxKind"/> enum values. /// </summary> /// <param name="modifiers">Valid <see cref="MemberImplementationModifier"/> to convert.</param> /// <returns>A collection that represents the transform</returns> public static IEnumerable <SyntaxKind> ToSyntaxKind(this MemberImplementationModifier modifiers) { //Select all the values that have the flag return((Enum.GetValues(typeof(MemberImplementationModifier)) as IEnumerable <MemberImplementationModifier>) .Where(m => modifiers.HasFlag(m)) .Select(m => ConvertToSyntaxKind(m))); }
public TestityClassBuilder(string className, MemberImplementationModifier modifiers) { rosylnCompilationUnit = SyntaxFactory.CompilationUnit(); rosylnClassUnit = SyntaxFactory.ClassDeclaration(className) .WithModifiers(SyntaxFactory.TokenList(modifiers.ToSyntaxKind().Select(x => SyntaxFactory.Token(x)))); memberSyntax = new List <MemberDeclarationSyntax>(); }
private static Mock<IMemberImplementationProvider> BuildMemberImplementationMock(string memberName, Type memberType, MemberImplementationModifier modifiers, IEnumerable<Type> attributeTypes) { Mock<IMemberImplementationProvider> implementationProvider = new Mock<IMemberImplementationProvider>(); //Setup the implementationProvider implementationProvider.SetupGet(x => x.MemberName).Returns(SyntaxFactory.Identifier(memberName)); implementationProvider.SetupGet(x => x.Type).Returns(SyntaxFactory.ParseTypeName(memberType.FullName)); implementationProvider.SetupGet(x => x.Modifiers).Returns(SyntaxFactory.TokenList(modifiers.ToSyntaxKind().Select(x => SyntaxFactory.Token(x)))); implementationProvider.SetupGet(x => x.Attributes) .Returns(SyntaxFactory.List(attributeTypes.Select(x => SyntaxFactory.AttributeList(SyntaxFactory.SingletonSeparatedList(SyntaxFactory.Attribute(SyntaxFactory.IdentifierName(x.FullName))))))); return implementationProvider; }
private static SyntaxKind ConvertToSyntaxKind(MemberImplementationModifier mod) { switch (mod) { case MemberImplementationModifier.Private: return SyntaxKind.PrivateKeyword; case MemberImplementationModifier.Public: return SyntaxKind.PublicKeyword; case MemberImplementationModifier.Virtual: return SyntaxKind.VirtualKeyword; case MemberImplementationModifier.Override: return SyntaxKind.OverrideKeyword; case MemberImplementationModifier.Static: return SyntaxKind.StaticKeyword; case MemberImplementationModifier.Sealed: return SyntaxKind.SealedKeyword; case MemberImplementationModifier.Protected: return SyntaxKind.ProtectedKeyword; default: throw new ArgumentException(nameof(MemberImplementationModifier) + " arg is in an invalid state. Could not handle Value: " + mod.ToString(), nameof(mod)); } }
public DefaultMemberImplementationProvider(Type memberType, MemberImplementationModifier modifiers, string name) { MemberName = SyntaxFactory.Identifier(name); Modifiers = SyntaxFactory.TokenList(modifiers.ToSyntaxKind().Select(x => SyntaxFactory.Token(x))); Type = SyntaxFactory.ParseTypeName(memberType != typeof(void) ? memberType.FullName : "void"); //we can't use void fullname or else we end up with System.Void which is rejected }
private static Mock <IMemberImplementationProvider> BuildMemberImplementationMock(string memberName, Type memberType, MemberImplementationModifier modifiers, IEnumerable <Type> attributeTypes) { Mock <IMemberImplementationProvider> implementationProvider = new Mock <IMemberImplementationProvider>(); //Setup the implementationProvider implementationProvider.SetupGet(x => x.MemberName).Returns(SyntaxFactory.Identifier(memberName)); implementationProvider.SetupGet(x => x.Type).Returns(SyntaxFactory.ParseTypeName(memberType.FullName)); implementationProvider.SetupGet(x => x.Modifiers).Returns(SyntaxFactory.TokenList(modifiers.ToSyntaxKind().Select(x => SyntaxFactory.Token(x)))); implementationProvider.SetupGet(x => x.Attributes) .Returns(SyntaxFactory.List(attributeTypes.Select(x => SyntaxFactory.AttributeList(SyntaxFactory.SingletonSeparatedList(SyntaxFactory.Attribute(SyntaxFactory.IdentifierName(x.FullName))))))); return(implementationProvider); }