Class name alias

  • C#
  • .NET (FX) 4.0

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Niko Ortner.

    Class name alias

    Hallo,
    Ist es möglich, eine klasse irgendwie so umzubenennen?

    Ich habe folgendes problem, ich sende mit diesem code (über die fluorinefx bibliothek) einen amf request:

    C#-Quellcode

    1. netConnection.Call("MovieStarPlanet.WebService.MovieService.AMFMovieService.SaveMovie", new GetCustomersHandler(), new object[] { new TicketHeader() });


    die klasse ticketheader sieht so aus:

    C#-Quellcode

    1. ​public class TicketHeader
    2. {
    3. public Array anyAttribute;
    4. public string Ticket = "hi";
    5. public void TicketHeaderKon()
    6. {
    7. }
    8. }




    und wenn ich mir den request dann im web debugger charles anschaue, sieht dass so aus:



    aber ich möchte dass das so aussieht:



    kann mir dabei jemand helfen?

    danke im vorraus,
    niklas
    Das ist ganz einfach der "FullName" dieser Klasse. Den bekommst Du auch, wenn Du GetType(TicketHeader).FullName ins Überwachungsfenster schreibst.
    Zum oberen Bild:

    VB.NET-Quellcode

    1. Namespace MSPTools
    2. Class TicketHeader
    3. End Class
    4. End Namespace

    Also der TicketHeader-Typ befindet sich im MSPTools-Namespace.
    Dagegen unteres Bild:

    VB.NET-Quellcode

    1. Namespace MovieStarPlanet.WebServices
    2. Class BaseWebService
    3. Class TicketHeader
    4. End Class
    5. End Class
    6. End Namespace

    Hier ist TickeHeader ein geschachtelter Typ im BaseWebService-Typ, der sich im MovieStarPlanet.WebServices-Namespace befindet.

    Eine Klasse, wie Du sagst, "umbenennen" macht nicht wirklich Sinn. Du kannst natürlich den Teil mit TicketHeader verändern, indem Du einfach public class TicketHeaderWasAnderes { ... hinschreibst. Aber der FullName leitet sich nunmal davon ab, wo die Klasse deklariert ist.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    Dass funktioniert aber nicht so richtig. Ich meine ich muss es nicht wirklich unbenennen, ich will einfach nur dass es dort steht, denn dass erwartet der server. durch deinen code werden die 2 variablen in TicketHeader nicht mitgesendet und auch +TicketHeader steht nicht dort wo es stehen soll.

    C#-Quellcode

    1. netConnection.Call("MovieStarPlanet.WebService.MovieService.AMFMovieService.SaveMovie", new GetCustomersHandler(), new object[] { new TicketHeader() });

    Der TicketHeader-Typ, der hier verwendet wird, muss nach diesem Schema deklariert sein:

    VB.NET-Quellcode

    1. Namespace MovieStarPlanet.WebServices
    2. Class BaseWebService
    3. Class TicketHeader
    4. End Class
    5. End Class
    6. End Namespace

    Bzw. in C#:

    C#-Quellcode

    1. namespace MovieStarPlanet.WebServices
    2. {
    3. class BaseWebService
    4. {
    5. class TicketHeader
    6. {
    7. }
    8. }
    9. }

    Dann ist GetType(TicketHeader).FullName bzw. typeof(TicketHeader).FullName "MovieStarPlanet.WebServices.BaseWebService+TicketHeader".

    Was macht denn der Server mit dem Objekt? Wenn der damit wirklich arbeitet, muss er einen Verweis auf eine Bibliothek haben (vermutlich MovieStarPlanet.dll), in der dieser Typ deklariert ist. Dann musst Du auch einen Verweis auf die selbe Bibliothek setzen und diesen Typ verwenden. Dann ergibt sich das vonselbst.

    Ich verstehe nämlich immer noch nicht 100%-ig, wo das Problem liegt.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    ich benutze jetzt

    C#-Quellcode

    1. ​netConnection.Call("MovieStarPlanet.WebService.MovieService.AMFMovieService.SaveMovie", new GetCustomersHandler(), new object[] { typeof(MovieStarPlanet.WebServices.BaseWebService.TicketHeader).FullName });


    dass problem ist aber:
    Ist doch klar.
    typeof(MovieStarPlanet.WebServices.BaseWebService.TicketHeader).FullName ist ja ein String. Schon mal auf FullName geklickt und dann F12 gedrückt?
    Einfach nur new MovieStarPlanet.WebServices.BaseWebService.TicketHeader() verwenden. Fertig.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils