J'ai écrit cette extension pour StringBuilder dans vb.net:NETHIXXXp> J'ai essayé de le porter à C # (j'apprends lentement / enseigner moi-même C #), mais j'ai échoué jusqu'à présent: P>
using System.Runtime.CompilerServices; namespace myExtensions { public static class sbExtension { [Extension()] public static void AppendFormattedLine(this System.Text.StringBuilder oStr, string format, string arg0) { oStr.AppendFormat("{0}{1}", string.Format(format, arg0), Environment.NewLine); } [Extension()] public static void AppendFormattedLine(this System.Text.StringBuilder oStr, string format, string arg0, string arg1) { oStr.AppendFormat("{0}{1}", string.Format(format, arg0, arg1), Environment.NewLine); } [Extension()] public static void AppendFormattedLine(this System.Text.StringBuilder oStr, string format, string arg0, string arg1, string arg2) { oStr.AppendFormat("{0}{1}", string.Format(format, arg0, arg1, arg2), Environment.NewLine); } [Extension()] public static void AppendFormattedLine(this System.Text.StringBuilder oStr, string format, string[] args) { oStr.AppendFormat("{0}{1}", string.Format(format, args), Environment.NewLine); } } }
5 Réponses :
C # 'S "Ce" mot-clé, que vous utilisez correctement, est un remplacement de l'attribut [extension ()]. Supprimer ceux-ci et vous devriez être prêt à partir. P>
clarifier, par "remplacement", je veux vraiment dire "sucre syntaxique" - lorsque le compilateur voit le "Ceci" modificateur, il génère la même extensionTtribue que vous devez ajouter à la main dans VB. P>
Retirez simplement l'attribut d'extension tout autant - C # nécessite uniquement le qualificatif code> sur le premier paramètre pour créer une méthode d'extension. P>
Vous voudrez modifier l'espace de noms vers le système, ainsi que de supprimer l'attribut d'extension, car d'autres ont dit. P>
Pourquoi voudraient-ils changer l'espace de noms vers le système?
Personne ne montre réellement un exemple de syntaxe.
public static void ApplyNewServer(this ReportDocument report, string serverName, string username, string password) { }
L'attribut que vous utilisez est pour la méthode d'extension, qui en C #, vous ne l'écrivez pas manuellement et le compilateur le faire pour vous, ... Vous pouvez apprendre ici, comment écrire une méthode d'extension dans .NET en utilisant à la fois VB & C # P>
http://www.codeproject.com/articles/261639/ Extension-Méthodes-in-Net P>
Non liée à votre question de vulgarisation, mais je vois dans la version VB utilisée par PARAMARRAY dans la dernière méthode. La syntaxe équivalente en C # est la chaîne de paramètres [] arguments.