Wie man Methode mit unbekannten Parametern erzeugt?Wie man Methode mit unbekannten Parametern erzeugt?
Ich verwende Microsoft.CSharp.dll
C# Skripte zu kompilieren:
CSharpCodeProvider provider = new CSharpCodeProvider();
CompilerParameters compilerParams = new CompilerParameters { GenerateExecutable = false, GenerateInMemory = true };
string scriptCode = GetFullCode(); //here i add usings and so on
var results = provider.CompileAssemblyFromSource(compilerParams, scriptCode);
Also, ich brauche einige wenige Funktionen hinzufügen, aber diese Funktionen können mit einer beliebigen Anzahl von Parametern und mit der Liste der Typen (DateTime
, int
, double
und so weiter).
Funktion sollte wie folgt sein nennen:
function(String,String,DateTime,int,...);
oder
function(DateTime,int,String,..);
und so weiter.
Und Benutzer kann diese Funktionen in Code verwenden.
Wie generiert man diese Funktionen? Als Beispiel, ich sagen, wie ich Code generieren jetzt:
// GetFullCode:
StringBuilder sb = new StringBuilder();
foreach (DictionaryEntry de in Assembles)
{
foreach (var us in de.Value.ToString().Split(new char[] { ';' }))
{
if (!string.IsNullOrWhiteSpace(us))
sb.AppendLine("using " + us + ";");
}
}
sb.AppendLine("namespace " + Namespace + "\n{");
sb.AppendLine(GetClassCode());
if(withMainFunc)
{
sb.AppendLine(@"static class Program
{
[STAThread]
static void Main()
{
//some init code
}
}");
}
sb.AppendLine("}");
Warum wollen Sie eine undefinierte Reihe von Argumenten, warum nicht nur ein Objekt mit den angegebenen Daten analysieren? Dann können Sie an den Attributen im Objekt arbeiten ... –
@MartinM 'string.Join()' oder 'string.Concat()' haben dieses Verhalten und sie haben ihre Berechtigung zu existieren – fubo