2016-03-25 15 views
0

Ich habe eine Methode namens "tag" erstellt, die ein HtmlTag-Objekt zurückgibt und Parameter vom Typ "HtmlTag" erhält (Siehe unten).C# -Parameter ohne Inline-Array verursachen einen Fehler "Benannte Argumentspezifikationen müssen erscheinen, nachdem alle festen Argumente angegeben wurden"

Ich versuche, die Parameter ohne ein Inline-Array übergeben, aber ich bekomme einen Fehler: "Named Argument Spezifikationen müssen erscheinen, nachdem alle festen Argumente angegeben wurden".

Der Fehler gelöst nur durch Einfügen der Parameter in ein Inline-Array (was ich wirklich nicht will).

Kann ich die Parameter nicht ohne ein Array übergeben?

protected HtmlTag tag(string tagName, string id = null, string classes = null, 
    Dictionary<string, object> attributes = null, Dictionary<string, object> data = null, 
    string text = null, params HtmlTag[] content) 
{yada yada...} 

Siehe unten, wie ich die Methode von oben nennen:

tag("form", "", attributes: ObjList("...."), content: 
        tag("input", "token", attributes: ObjList("..." + token + "...")), 
        tag("label", "...", attributes: ObjList("..."), text: "..."), 
        tag("...", "...", attributes: ObjList("..."))); 

Ich habe keine Fehler, wenn ich den „Inhalt“ params Wert innerhalb einer Inline-Anordnung von HtmlTag (siehe unten) einsetzen:

tag("form", "", attributes: ObjList("...."), content: new HtmlTag[] { 
        tag("input", "token", attributes: ObjList("..." + token + "...")), 
        tag("label", "...", attributes: ObjList("..."), text: "..."), 
        tag("...", "...", attributes: ObjList("..."))}); 
+3

Wenn Sie die Argumente übergeben wollen, glaube ich nicht, es gibt einen anderen Weg, als es ein Array zu machen. Benannte Argumente und 'params' kommen nicht gut miteinander aus. – Jcl

+0

Benannte und optionale Argumente ... ugh. Also sehr VB. Verwenden Sie die richtigen Überladungen. – Nyerguds

Antwort

0

Dank Nyerguds und Jcl verwende ich überladene Methode als Antwort. Scheint wie es ist die einzige Möglichkeit zu gehen (außer Inline-Array)

+2

Es ist möglich, dass 'params' _always_ die letzten Argumente sind, alles was Sie tun mussten, war den' content: 'Namen zu lassen. Das System würde wahrscheinlich erkennen, dass alle diese "HtmlTag" -Args der richtige Typ für die "Params" auf diese Weise waren. – Nyerguds