Frage Verwenden Sie den Rasierer, um Code zu generieren? [geschlossen]


Bevor ich viel Zeit in die Erforschung von Razor und dessen Anwendbarkeit investiere, möchte ich dich fragen, ob man mit Razor C # -Code generieren kann? Irgendwelche Probleme, die Sie sofort denken können?


8
2018-02-08 20:38


Ursprung


Antworten:


Du sicherlich könnte Verwenden Sie Razor zum Generieren von C # -Code, aber es ist nicht wirklich für nicht-XML-ähnliche Sprachen konzipiert. Sie müssten viele <text> -Tags haben.


5
2018-02-08 21:53



Mein erster Versuch mit Rasierer.dll Version 2.1.4039.23635 war viel einfacher als ich erwartet hatte

Hier ist eine kleine Arbeitsdemo

Das Code Generator

using System.Diagnostics;
using RazorEngine;

namespace CodeGen3b
{
    class Program
    {
        static void Main(string[] args)
        {
            string template = ... see below;
            try
            {
                string generatedCode = Razor.Parse(template, 
                                    new { UserNamespace = "MyOwnNamespace" });
                Debug.WriteLine(generatedCode);

            }
            catch (System.Exception ex)
            {
                Debug.WriteLine(ex.Message);
                Debug.WriteLine(ex.StackTrace);
            }
        }
    }
}

Das Vorlage sieht aus wie das

using System;
namespace @Model.UserNamespace
{
    class Program
    {
        static void Main(string[] args)
        {
              @for(int i = 0; i < 3; i++){
                <text>Debug.WriteLine("hello @i " + @Model.UserNamespace);
</text>}
        }
    }
}

Beachten Sie das <text> Element, das den Rasierer daran hindert, das zu interpretieren Debug.WriteLine

Das Ausgabe ist

using System;
namespace MyOwnNamespace
{
    class Program
    {
        static void Main(string[] args)
        {
                Debug.WriteLine("hello 0 " + MyOwnNamespace);
                Debug.WriteLine("hello 1 " + MyOwnNamespace);
                Debug.WriteLine("hello 2 " + MyOwnNamespace);
        }
    }
}

Es wäre schön, wenn Razor das umsetzen würde @"..."@ oder @'...'@ als Alias ​​für <text>...</text> . Ich habe das hinzugefügt razorengine.codeplex-Problem als eine Bitte um Verbesserung. Wenn Sie Rasierer als Codegenerator verwenden möchten, bitte upvote an razorengine.codeplex-Problem

Edit: wie @ Epitka vorgeschlagen, können wir verwenden @: anstelle eines einzeiligen Text-Tags:

using System;
namespace @Model.UserNamespace
{
    class Program
    {
        static void Main(string[] args)
        {
              @for(int i = 0; i < 3; i++){
                @:Debug.WriteLine("hello @i " + @Model.UserNamespace);
              }
        }
    }
}

12
2018-03-21 10:44



Sie können Rasierer wie T4-Vorlagen verwenden, um jede Art von Text zu generieren. Siehe diesen Blogbeitrag.

http://weblogs.asp.net/mikaelsoderstrom/archive/2010/08/03/use-razor-for-t4-templates.aspx


3
2018-02-08 20:40