Exemplo n.º 1
0
        private static void createRemoteType(ClassDeclarationSyntax @class, Scope scope, out MethodDeclarationSyntax creation)
        {
            var originalName = @class.Identifier.ToString();
            var typeName     = "__remote" + originalName;

            creation = Templates
                       .RemoteMethod
                       .Get <MethodDeclarationSyntax>(typeName, originalName);

            scope.AddType(@class
                          .WithIdentifier(CSharp.ParseToken(typeName))
                          .WithBaseList(CSharp.BaseList(CSharp.SeparatedList(new BaseTypeSyntax[] {
                CSharp.SimpleBaseType(CSharp.ParseTypeName(originalName))
            })))
                          .WithAttributeLists(CSharp.List <AttributeListSyntax>())
                          .WithMembers(CSharp.List(
                                           createRemoteMethods(@class)
                                           .Union(createRemoteConstructors(@class, typeName))
                                           .Union(new MemberDeclarationSyntax[] {
                Templates.RemoteId,
                Templates.RemoteDispatch,
                Templates.RemoteSerialize,
                Templates.RemoteDeserialize
            }))));
        }