| 

.NET C# Java Javascript Exception

1
Hi zusammen,
ist es möglich so code wie
txtBox.Text = Globals.ThisDocument.descr.Text.Remove
(Globals.ThisDocument.descr.Text.Length - 1, 1);

kürzer zu schreiben?

Hilfreich wäre es wenn ich iwie
"Globals.ThisDocument"

in eine variable packen könnte, damit das ganze dann so auschauen würde
txtBox.Text = myVar.descr.Text.Remove(myVar.descr.Text.Length - 1, 1);

Danke !
News:
29.07.2011
DaTaBeRt 416 1 7
4 Antworten
3
Hallo,

Wenn du solche Operationen öfter vornehmen musst bieten sich die extension Methods an:

http://msdn.microsoft.com/de-de/library/bb383977.aspx#Y24

Die gewünschte Funktion wird als Methode in eine eigene statische Klasse ausgelagert, erster Parameter ist der Typ des zu erweiternden Objekts. Rückgabe ist in deinem Fall dann String. So bekommst du sehr schönen schlanken Code.

Gruß

Edit:

Also ungefähr so:

namespace ExtensionMethods
{
public static class MyExtensions
{
public static String gibMirDescrText(this Globals globals)
{
return globals.ThisDocument.descr.Text.
Remove(globals.ThisDocument.descr.Text.Length - 1, 1);

}
}
}


Danach kannst Du den Code in Deiner Form/Aspx folgendermaßen anpassen:

txtBox.Text = Globals.gibMirDescrText();
29.07.2011
LutzJ 1,3k 1 8
LutzJ 1,3k 1 8
*thumbs up* !
DaTaBeRt 03.08.2011
1
Klar, die Variable muss halt den selben Typ wie ThisDocument habe.

Du kannst aber auch den Text voher in einen String speichern:

String text = Globals.ThisDocument.modDescrDoc.Text;
txtBox4.Text = text.Remove(text.Length - 1, 1);


// edit: Fehler im Codebeispiel korrigiert
29.07.2011
Tachyon 690 1 7
Tachyon 690 1 7
0
Du kannst einen using-alias verwenden:

Beachte hier Namespaces und Klassen:
using System;
namespace ns1
{
namespace ns2
{
public static class Class1
{
public static class Class2
{
public static void Out(string text)
{
Console.WriteLine(text);
}
}
}
}
}


Und hier die Aufrufe mit Alias:
using System;
using c1 = ns1.ns2.Class1;
using c2 = ns1.ns2.Class1.Class2;

namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
ns1.ns2.Class1.Class2.Out("test1");
c1.Class2.Out("test2");
c2.Out("test3");
}
}
}
29.07.2011
Martin Fuchs 1,4k 9
0
ich hab es jetzt folgendermaßen gelöst:

public class test
{
ThisDocument myVar = Globals.ThisDocument;

public void function()
{
txtBox.Text = myVar.descr.Text.Remove(myVar.descr.Text.Length - 1, 1);
}
}

so kann ich in allen methoden das "Globals.ThisDocument" durch myVar ersetzen was den code deutlich übersichtlicher macht :D.
02.08.2011
DaTaBeRt 416 1 7
Das entspricht in etwas meiner Lösung mit den Extension Methods, nur dass Du diese Lösung auf jeder Seite (Form oder Aspx) wegen der Referenz zur Textbox neu implementieren musst, oder die Textbox als Referenze übergeben...
LutzJ 02.08.2011
gut möglich, ich hab das aus dem inhalt des links nicht so erkennen können.
DaTaBeRt 03.08.2011
Ich habe gerade mal ein passendes Codesnippet in meinen Beitrag hineineditiert.
LutzJ 03.08.2011
Super danke ! Das is schon eindeutiger :D
DaTaBeRt 03.08.2011

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH