Laden...

JavaScript-Code in C# umwandeln: Suche Äquivalent für typeof (function)

Erstellt von Bunnychecker vor 11 Jahren Letzter Beitrag vor 11 Jahren 2.104 Views
Hinweis von herbivore vor 11 Jahren

Abgeteilt von JavaScript-Code in C# umwandeln: Funktion, die Zahl erwartet, kann auch mit String aufrufen werden

blöd, dass sich jetzt das Threadthema so speziell in eine Richtung gelenkt wurdet, eigentlich ging es mir allgemein um die Übersetzung Javascript <-> C#

Nein, gar nicht blöd. Wenn neben [Hinweis] Wie poste ich richtig? Punkt 3 (aussagekräftige, konkrete Titel) auch Punkt 1.2 (nur ein Thema pro Thread) beachtet wird, wird es im Gegensatz viel übersichtlicher, gerade für Leute, die später die Forensuche benutzten und dann statt fünf langen, unübersichtlichen, verzahnten und wenig erhellend benannten "Übersetzung Javascript <-> C#"-Threads besser 30 kurze, übersichtliche, unverzahnte sehen, bei denen sie direkt im Titel erkennen können, ob das Thema relevant ist.

B
Bunnychecker Themenstarter:in
224 Beiträge seit 2009
vor 11 Jahren

Ich versuche gerade die Funktion typeof von JavaScript nachzubauen und kann euch dazu folgende Info zukommen lassen:

Mögliche Rückgabewerte der typeof Funktion sind:
boolean (Ja/Nein-Variable),
string (Zeichenkettenvariable),
number (numerische Variable),
function (Funktion),
object (Objekt),
undefined (unbestimmter Typ).

        public string GetJavaScriptType(object o)
        {
            Type type = o.GetType();

            if(type==typeof(string))
                return "string";

            if(type==typeof(bool))
                return "boolean";

            if(type==typeof(object))
                return "object";

            // return "function";

            if(double.TryParse(o.ToString(),out 0))
                return "number";

            return "undefined";
        }

Wie könnte man den Rückgabewert "function" lösen und kann man "number" besser bestimmen als mit meiner Methode?

Edit: blöd, dass sich jetzt das Threadthema so speziell in eine Richtung gelenkt wurdet, eigentlich ging es mir allgemein um die Übersetzung Javascript <-> C#

C
224 Beiträge seit 2009
vor 11 Jahren

Was genau macht denn Dein Javascript?
Eine Übersetzung zu übersetzen erinnert mich an
einen Ofen in einem Ofen, um backen zu können während man backt.

Erwünschte Anwendung -> Javascript, Javascript->C#

Kann man einfacher lösen durch:
Erwünschte Anwendung -> C#

B
Bunnychecker Themenstarter:in
224 Beiträge seit 2009
vor 11 Jahren

Vielen Dank für das Aufsplitten der Threads und für deine Antwort Colo.

Die Prozedur das Javascript nachzubauen steht fest. Da gibt es nichts dran zu rütteln. Ich bin sebst nicht sonderlich froh drüber, aber so soll es gemacht werden.

F
10.010 Beiträge seit 2004
vor 11 Jahren

Das macht doch keinen Sinn.

Du sollst sicherlich die Funktionalität nachbauen und dazu musst du nicht jede Zeile "übersetzen" sondern den Sinn.
Und in .NET gibt es weit aus mehr typen, aber das wird her sicher nicht benötigt.

Wozu wird denn diese Funktion benötigt?
Um krampfhaft OOP in JS zu machen?

B
Bunnychecker Themenstarter:in
224 Beiträge seit 2009
vor 11 Jahren

Prinzipiell ergibt das Ganze keinen Sinn, deswegen ist es auch notwendig, Zeile für Zeile zu übersetzen. Hinzu kommt, dass das Skript minimized und teilweise obfuscated wurde, was die Sache noch verkompliziert.
Es kommt bei der Funktion von oben nicht daraufan, jeden Typ von .NET zurückzugeben, sondern die von Javascript als string. Im Javascript gibt es dafür eine spezielle Funktion, die ich mit C# nachbauen muss, da später im Skript Abfragen auf a == "function" getätigt werden.

309 Beiträge seit 2008
vor 11 Jahren

Über den Sinn ist ja oben spekuliert worden.
Hast du dir im übrigen schonmal Script# angeschaut? http://projects.nikhilk.net/ScriptSharp/
Ih glaube ihr erfindet das Rad nochmal neu.

Dein Code funktioniert aber so nicht.


 if(type==typeof(object))
                 return "object";

Wird nur dann "object" zurückgeben, wenn das Object wirklich von Basis Datentyp object ist:

object o = new object();

Für alle anderen Objekte wird deine Funktion "undefined" zurückliefern.

Zu function:

In Javascript kann ich ja sowas schreiben:


var func = function() { //... };

Was dem in C# am nächsten kommt sind Delegaten. Aber ob dann das dann der Sinn der Sache ist?

Wie oben schon geschrieben, schaut euch mal Script# an, ist vielleicht genau das was ihr braucht.

using System;class H{static string z(char[]c){string r="";for(int x=0;x<(677%666);x++)r+=c[
x];return r;}static void Main(){int[]c={798,218,229,592,232,274,813,585,229,842,275};char[]
b=new char[11];for(int p=0;p<((59%12));p++)b[p]=(char)(c[p]%121);Console.WriteLine(z(b));}}

5.742 Beiträge seit 2007
vor 11 Jahren

Im Javascript gibt es dafür eine spezielle Funktion, die ich mit C# nachbauen muss, da später im Skript Abfragen auf a == "function" getätigt werden.

Bevor du anfängst, Javascript-Bibliotheken "nachzucoden", solltest du sie lieber direkt in C# nutzen.
Siehe als Anregung: Are there any .NET CLR/DLR implementations of ECMAScript?