Laden...

VS2015: Datentyp ändern (umbennenen)

Erstellt von elTorito vor 7 Jahren Letzter Beitrag vor 7 Jahren 1.500 Views
elTorito Themenstarter:in
177 Beiträge seit 2009
vor 7 Jahren
VS2015: Datentyp ändern (umbennenen)

Hi,

in VS ist es ja möglich eine Klasse umzubenennen und diese wird dann überall im Projekt abgeändert.

Ist es auch möglich auf diese Art und Weise ein datentyp zu ändern?

Also ich hab z.b.

public class HelloClass
{
public string Id{get;set;
}

und möchte nun aus string ein int machen, muss dann anschließend alle funktionen welche den Typ string erwarten abändern.

geht das evtl. einfacher?

Vielen Dank

16.835 Beiträge seit 2008
vor 7 Jahren

Hättest Du OOP verwendet und eine entsprechende Basisklasse, dann könntest es zentral an einer Stelle ändern 😃
So ist es eine Lehrstunde oder Du verwendest Search and Replace mit Regex.

Edit: gilt nur für die Property selbst, nicht für Methoden.

PS: In C# gibt es keine Funktionen, nur Methoden.

3.003 Beiträge seit 2006
vor 7 Jahren

Disclaimer: ich benutze Resharper, der hat ein "Change Signature..."-Menü, mit dem das geht.

Meines Wissens ist das mit Bordmitteln von Visual Studio nicht möglich. Für solche relativ simplen Refaktorierungen kann man aber nach der altbewährten Methode "einfach ändern und korrigieren, bis alle Buildfehler weg sind" vorgehen. Auf die Weise wird man auch noch gezwungen, sich genau anzuschaun, was man da ändert. Kann nur gut sein.

LaTino

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)

elTorito Themenstarter:in
177 Beiträge seit 2009
vor 7 Jahren

Hättest Du OOP verwendet und eine entsprechende Basisklasse, dann könntest es zentral an einer Stelle ändern 😃
So ist es eine Lehrstunde oder Du verwendest Search and Replace mit Regex.

Puh... Jetzt musste ich kurz überlegen, aber ich denke schon ich hab OOP und auch eine Basisklasse, jetzt war ich kurz verwirrt und am grübeln "Wie? das ist nicht oop was ich mache?" ...

Muss(te) den Typ wirklich nur an einer Stelle ändern, habe allerdings ein "Dummy Service" der mir TestDaten generiert, sonst alles gut.

Ja, mache das sonst auch so, ändern bis alle Build Fehler weg sind.

Ich dachte evtl. sei es möglich mit dem Punkt "Schnellaktionen und Refactorings" welcher ganz oben erscheint wenn man rechte Maustaste im Code klickt. Wenn ich da anklicke passiert allerdings nichts.

3.003 Beiträge seit 2006
vor 7 Jahren

Ja, die "Schnellaktionen und Refactorings" sind noch nicht so mächtig, wachsen aber mit jeder Version. Wenn die Lampe leuchtet, aber nichts passiert, betrachte das als "reserved for future use" 😉.

LaTino

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)

T
2.224 Beiträge seit 2008
vor 7 Jahren

@Abt
Das Problem ist nicht, dass sich der Typ in der Vererbungshirachie ändert.
Sondern alle Methoden Signaturen an die, die ID übergeben wird.
Dies wollte der TE mit einer ähnlichen Anpassung lösen.

Ich nutze nur VS und mache solche Changes per Hand.
Ist zwar manchmal nervige Mehrarbeit, aber dies nehme ich in kauf, da sowas sehr selten vorkommt 😃

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

elTorito Themenstarter:in
177 Beiträge seit 2009
vor 7 Jahren

Ja, die "Schnellaktionen und Refactorings" sind noch nicht so mächtig, wachsen aber mit jeder Version. Wenn die Lampe leuchtet, aber nichts passiert, betrachte das als "reserved for future use" 😉.

👍

Danke für eure Antworten. 👍

1.040 Beiträge seit 2007
vor 7 Jahren

Sondern alle Methoden Signaturen an die, die ID übergeben wird.

Sorry, aber da muss ich kurz reingrätschen.
Wer will sowas? Der Typ des Methodenparameters hat doch nichts mit dem Typ einer Property zu tun, die hereingereicht wird - will sagen sie sind nicht festverdrahtet.
(Ich kann schlecht Dinge erklären. 😄)

Beispiel:

private int MeineProperty { get; }

private void MacheIrgendwas(int wert);

private void IrgendeineTolleFunktion()
{
    MacheIrgendwas(1);
    MacheIrgendwas(2);
    MacheIrgendwas(MeineProperty);
}

Ändert man jetzt - aus welchem Grund auch immer - den Typ der Property, soll dich nicht automatisch auch der Typ der Funktion geändert werden. Gibt doch am Ende nur noch mehr Fehler.

Man sollte auch nicht das Umbenennen einer Funktion/Klasse/Whatever mit dem Ändern eines Datentypen vergleichen, ersteres hat keinerlei Einfluss auf den Programmablauf (außer man wählt einen existierenden Namen), zweiteres schon.

@LaTino: Was ändert "Change Signature..." alles? Auch Methodenparameter?

3.003 Beiträge seit 2006
vor 7 Jahren

@LaTino: Was ändert "Change Signature..." alles? Auch Methodenparameter?

Nein, nur die Signatur. Der ursprüngliche Einsatzzweck ist, Parameter von Methoden schnell zu ändern - deshalb der Name "change signature" - dass das auch mit Properties geht, ist vermutlich der Tatsache geschuldet, dass Properties quasi-Methoden sind. Für Methoden setze ich das relativ häufig ein, für Properties noch nie 😉.

LaTino

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)

1.040 Beiträge seit 2007
vor 7 Jahren

(Ich kann mir nicht so recht vorstellen, was das für einen Sinn hat bzw. was er alles ändert. Hast du zufällig ein Beispiel zur Hand? Gerne auch per PN. =)){gray}