Пример #1
0
    void GenerateInterface(Type type)
    {
        output.WriteLine ("\tpublic interface {0} : ITypeScriptObject", type.GetTypeReferenceName ());
        GenerateImplements (type);

        output.WriteLine ("\t{");
        foreach (var p in EnumerateProperties (type)) {
            GenerateFieldSignature (type, p, null);
            output.WriteLine (" { get; set; }");
        }
        foreach (var m in EnumerateMethods (type)) {
            GenerateMethodSignature (type, m, null);
            output.WriteLine (";");
        }
        output.WriteLine ("\t}");

        output.WriteLine ("\tpublic class {0} : TypeScriptObject, {1}", type.GetTypeReferenceName ("_Impl"), type.GetTypeReferenceName ());
        output.WriteLine ("\t{");
        output.WriteLine ("\t\tpublic {0}_Impl (ObjectInstance instance) : base (instance) {{}}", type.GetPrimaryName ());

        ImplementProperties (type);
        ImplementMethods (type);

        output.WriteLine ("\t}");
    }
Пример #2
0
    void GenerateClass(Type type)
    {
        output.Write ("\tpublic class " + type.GetTypeReferenceName () + " : ");
        string baseType = GetBaseTypeFromAttribute (type);
        if (baseType == null)
            output.WriteLine ("TypeScriptObject");
        else
            output.WriteLine (baseType);
        GenerateImplements (type);

        output.WriteLine ("\t{");

        output.WriteLine ("\t\tpublic {0} (ObjectInstance instance) : base (instance) {{}}", type.GetPrimaryName ());

        foreach (var c in type.GetConstructors (flags)) {
            if (!c.IsPublic)
                continue;

            // FIXME: they are workarounds for conflict betweeen
            // ctor(Object regex) and ctor(object instance)...
            if (type.GetTypeReferenceName () == "RegexLiteral" || type.GetTypeReferenceName () == "RegularExpressionLiteralToken")
                continue;

            output.WriteLine ("\t\tpublic {0} ({1})", type.GetPrimaryName (), GetArgumentsSignature (c));
            var args = GetMarshaledCallArguments (c);
            output.WriteLine ("\t\t\t : base (CallConstructor (\"{0}\", \"{1}\"{2}))", type.Namespace, type.GetTypeReferenceName (), args);
            output.WriteLine ("\t\t{");
            output.WriteLine ("\t\t}");
        }

        ImplementProperties (type);
        ImplementMethods (type);

        ImplementInterfaces (type);

        output.WriteLine ("\t}");
    }