none
String als Code ausführen RRS feed

Antworten

  • Hallo zusammen,

    soweit ich informiert bin ist das dynamische kompilieren wärend der Laufzeit aus Sicherheitsgründen nicht erlaubt. Das ist in den meisten Fällen aber auch nicht nötig. Maximal für XAML ist es hin- und wieder praktisch. Ein Beispiel für letzteres findest du hier.

    Was hast du denn im Detail vor? Vielleicht gibt es eine gute, uns bekannte Alternative.


    Tom Lambert - .NET (C#) MVP
    Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Freitag, 23. Oktober 2015 23:46
  • Hi,

    IMHO brauchst Du da keinen "dynamischen" Code.

    Ob der Radiobutton aktiv oder nicht aktiv ist, solltest Du direkt über die Instanz der Internals Klasse festlegen. Und die hast Du Du ja. Hier mit Strings zu arbeiten, ist nicht notwendig.

    Ich denke, dass deine grundsätzliche Vorgehensweise hier nicht die richtige ist, daher eine kurze Erläuterung, wie ich das in etwa machen würde.

    Control erstellen, dass pro "Internals" Instanz die gewünschten Daten ausgibt also bspw. ein Label mit dem Namen der Lampe, eine Checkbox mit dem Status, usw. Die Ausgaben werden dabei entweder im Control direkt aus den Eigenschaften der Internals Instanz ermittelt oder eben bei der Erstellung im XAML durch die Bindungsinformationen.

    Übergeordnetes Control für Auflistungen (da gibt es verschiedene, welches Du nehmen solltest, hängt von mehreren Faktoren ab). Hier wird dann deine List<Internals> gebunden.

    Wenn Du dann den Status abfragst, machst Du das direkt über die Internals Instanz und änderst bei der Rückantwort vom Server eben genau diese Instanz. Das Control, welches den Status der Lampe anzeigen soll, ändert dann aufgrund der direkten Bindung automatisch ihre Werte/Anzeige.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Samstag, 24. Oktober 2015 10:24
    Moderator

Alle Antworten

  • Hi,

    ob das auch mit WP funktioniert, weiß ich nicht, für generelle Hinweise schau mal hier:

      http://www.cupworks.net/compiling-csharp-at-runtime-part-one/

      https://msdn.microsoft.com/de-de/library/saf5ce06.aspx


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Freitag, 23. Oktober 2015 20:46
    Moderator
  • Hallo zusammen,

    soweit ich informiert bin ist das dynamische kompilieren wärend der Laufzeit aus Sicherheitsgründen nicht erlaubt. Das ist in den meisten Fällen aber auch nicht nötig. Maximal für XAML ist es hin- und wieder praktisch. Ein Beispiel für letzteres findest du hier.

    Was hast du denn im Detail vor? Vielleicht gibt es eine gute, uns bekannte Alternative.


    Tom Lambert - .NET (C#) MVP
    Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Freitag, 23. Oktober 2015 23:46
  • Hallo,

    danke für eure Hilfe. Ich habe das folgende Problem, dass ich  ein Textfeld mit dem Namen "Lampe" und 2 Radiobutton mit dem Namen "Lampe_on" und "Lampe_off" habe. Mit Hilfe von einer HTTP Verbindung wird geguckt, welcher der beiden ischecked= true haben soll. Da ich mehrere Lampen (Lampe1, Lampe2, ..) habe, habe ich eine Liste mit den Namen erstellt, und per foreach schleife wird der Status vom Server geholt.

    Mein Gedankengang war, dass ich jetzt z.b sage:

    Leuchte + "_on.IsChecked" = true;

    Leuchte ist die Variable von der foreach schleife.

    Ich hoffe ihr könt mir dabei helfen

    arokh12

    Samstag, 24. Oktober 2015 09:53
  • Hi,

    so ergibt das (zumindest für mich) keinen Sinn, da Du nicht schreibst, wie Du das eigentlich abprüfen willst, welche Daten in welcher Form Du an die "HTTP Verbindung" (das kann alles mögliche sein) sendest, in welchem Format Du Daten zurückerhältst, ...

    Poste daher bitte mehr Details zu dem, was Du machst und vor allem, wie Du es machst bzw. wie es von der "HTTP Verbindung" erwartet wird.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Samstag, 24. Oktober 2015 09:58
    Moderator
  • Hi,

    so ergibt das (zumindest für mich) keinen Sinn, da Du nicht schreibst, wie Du das eigentlich abprüfen willst, welche Daten in welcher Form Du an die "HTTP Verbindung" (das kann alles mögliche sein) sendest, in welchem Format Du Daten zurückerhältst, ...

    Poste daher bitte mehr Details zu dem, was Du machst und vor allem, wie Du es machst bzw. wie es von der "HTTP Verbindung" erwartet wird.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Also ich sende die Variable Leuchte von der foreach Schleife mit Hilfe einer HTTP-Verbindung an den Server.

                foreach (string Leuchte in Betriebsmittel)
                {
                    string Rückgabe_Status = await FHEM.Austausch.Status_abrufen(Leuchte);
    
                    bool Auswertung = String.Equals(Rückgabe_Status, "on");     
    
                }

    So sieht die Verbindung aus:

    public static async Task<string> Status_abrufen(string Betriebsmittel) { HttpClient client = new HttpClient(); HttpResponseMessage Serverantwort = new HttpResponseMessage(); string Link = "XXX"; string Fehler = ""; string Serverantwort_Text; var json_data = string.Empty; // Senden string _auth = string.Format("{0}:{1}", "XXX", "XXX"); string _enc = Convert.ToBase64String(Encoding.UTF8.GetBytes(_auth)); string _basic = string.Format("{0} {1}", "Basic", _enc); client.DefaultRequestHeaders.Add("Authorization", _basic); Uri resourceUri; if (!Uri.TryCreate(Link, UriKind.Absolute, out resourceUri)) { MessageDialog msgbox = new MessageDialog("Keine Verbindung zum Server"); await msgbox.ShowAsync(); } try { Serverantwort = await client.GetAsync(Link); Serverantwort.EnsureSuccessStatusCode(); Serverantwort_Text = await Serverantwort.Content.ReadAsStringAsync(); } catch (Exception ex) { Fehler = "Error = " + ex.HResult.ToString("X") + " Message: " + ex.Message; Serverantwort_Text = ""; } if (Fehler != "") { MessageDialog msgbox = new MessageDialog(Fehler); await msgbox.ShowAsync(); } Serverantwort_Text = Serverantwort_Text.Replace("<br>", Environment.NewLine); FHEM.Json.RootObject Antwort = JsonConvert.DeserializeObject<FHEM.Json.RootObject>(Serverantwort_Text);

    string Rückgabe_Status= Antwort.Results[0].Internals.STATE; return Rückgabe_Status; }


    Nachdem ich vom Server die Rückantwort bekommen habe, ob die Lampe on oder off ist, sollte sie in der Schleife (siehe 1. Code) ausgewertet werden und dann der entsprechende Radiobutton aktiviert werden.

    arokh12


    • Bearbeitet arokh12 Samstag, 24. Oktober 2015 10:14
    Samstag, 24. Oktober 2015 10:13
  • Hi,

    IMHO brauchst Du da keinen "dynamischen" Code.

    Ob der Radiobutton aktiv oder nicht aktiv ist, solltest Du direkt über die Instanz der Internals Klasse festlegen. Und die hast Du Du ja. Hier mit Strings zu arbeiten, ist nicht notwendig.

    Ich denke, dass deine grundsätzliche Vorgehensweise hier nicht die richtige ist, daher eine kurze Erläuterung, wie ich das in etwa machen würde.

    Control erstellen, dass pro "Internals" Instanz die gewünschten Daten ausgibt also bspw. ein Label mit dem Namen der Lampe, eine Checkbox mit dem Status, usw. Die Ausgaben werden dabei entweder im Control direkt aus den Eigenschaften der Internals Instanz ermittelt oder eben bei der Erstellung im XAML durch die Bindungsinformationen.

    Übergeordnetes Control für Auflistungen (da gibt es verschiedene, welches Du nehmen solltest, hängt von mehreren Faktoren ab). Hier wird dann deine List<Internals> gebunden.

    Wenn Du dann den Status abfragst, machst Du das direkt über die Internals Instanz und änderst bei der Rückantwort vom Server eben genau diese Instanz. Das Control, welches den Status der Lampe anzeigen soll, ändert dann aufgrund der direkten Bindung automatisch ihre Werte/Anzeige.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Samstag, 24. Oktober 2015 10:24
    Moderator