Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von LaTino
Thema: [gelöst] string zu decimal; Konvertierung von einem unbekannten Sprachformat
Am im Forum: Grundlagen von C#

Zitat von ThomasE.
Gäbe es etwas schöneres, als dann unter Umständen in irgend einer Konfig 'mögliche' Sprachen festzulegen, nach denen diese frickelei geprüft/konvertiert wird?

T-Virus hat das eigentliche Problem nebenbei erwähnt:

a) für eine beliebige Zeichenkette ist nicht sicher, dass es genau eine CultureInfo gibt, die sie als Zahl interpretieren kann. Im Gegenteil, sehr wahrscheinlich gibt's mehrere: an der Zeichenkette ist also nicht zu erkennen, welche CultureInfo das ist.

b) das Ergebnis des Parsings ist nicht unabhängig von der CultureInfo.

Beides zusammen bedeutet: du kannst jederzeit in die Situation kommen, dass du zu einer Zeichenkette mehr als ein geparstes Ergebnis bekommst, ohne dass du entscheiden kannst, welches das richtige ist.

Was auch genau der Grund dafür ist, die Culture vorzugeben: sie selbst herauszufinden (und damit die richtige Interpretation der Zeichenkette), ist u.U. nicht möglich.

LaTino

Thema: Wie kann ich abfragen ob meine Eingabe " " bzw einfach "nichts" ist?
Am im Forum: Grundlagen von C#

Deinen Enthusiasmus in allen Ehren, aber vielleicht wäre es sinnvoll, erst einmal ein gutes Buch zu C# durchzuarbeiten? Gibt durchaus welche, die nicht allzu langweilig sind.

String.IsNullOrEmpty

LaTino

Thema: Prüfen ob Klasse/Unterklasse und Methode existiert (via String).
Am im Forum: Grundlagen von C#

Und geh bitte vom konzept ab, eine Mutterklasse (bei dir C) zu haben, und dort zig Klassen rein zu schachteln. So organisiert man das in C# nicht, das ist in anderen Sprachen nur ein Notbehelf. Verschachtelte Klassen sind in .net/C# eher selten (vgl. Single Responsibility)

LaTino

Thema: 2 DataTable zusammen führen
Am im Forum: Grundlagen von C#

Zitat von rohu2007
Danke für deinen Vorschlag, den ich auch verstanden habe.
Aber, das Datum von Status 3 und Status 5 bleibt immer noch in einer Spalte.

Genau das ist unbrauchbar für mich. Ich muss das Datum von Status 3 und Status 5 in separaten Spalten, nebeneinander haben.

Das ist mein Problem...

Robert

Hatte ich wohl überlesen. Self-join löst dieses Problem.

LaTino

Thema: Prüfen ob Klasse/Unterklasse und Methode existiert (via String).
Am im Forum: Grundlagen von C#

Deine Infrastruktur ist so ausgereift, dass die Optimierung des Routings sich eher lohnt als eine Optimierung der Controller / sonstiger Infrastruktur (i.S.v. Zeit pro roundtrip)? Nach deinen Ausführungen möchte ich das mal bezweifeln. Dazu ließe sich noch sehr viel sagen, würde aber zu weit vom Thema weg führen und bei dir nur als Genörgle ankommen, weil du deine Meinung offenbar sowieso schon gefasst hast und von uns nur Bestätigung haben möchtest.

Ein simples statisches routing, wie du es willst, wäre vermutlich ohne Reflection einfach so erschlagen:


class Mapper : Dictionary<Func<object[], IActionResult>, string>
{
    static Mapper() 
    {
         Add(c.Events.Edit, "PUT /events/{id}");
         Add(c.Rules.Add, "POST /rules");
         Add(c.Example.Delete, "DELETE /example/{id}");
         Add(c.Events.GetSubCollection, "GET /events/{eventId}/collection");
    }

    public IActionResult ProcessRequest(string url)
    {
           var route = this.FirstOrDefault(p => IsMatch(p.Key, url)) ?? NotFoundRoute;
           return route.Value(GetParameters(url));
     }

     //IsMatch: true, wenn request-uri auf die hinterlegte route passt
     //getParameters: extrahiert die {parameter} aus der request-Uri
    //NotFoundRoute: (objects) => new NotFoundResult();
}

Ganz ohne Reflection. Ich halte das aber für eine ungenügende Implementierung für ein modernes Routing. Filter, query parameters, partial requests, Sortierung, Response format uswusf müsste man noch einbauen. Ob das Ergebnis dann immer noch so robust und schnell wie zB das Routing in Asp.NET Core ist, bezweifle ich mal.

LaTino

Thema: 2 DataTable zusammen führen
Am im Forum: Grundlagen von C#

SQL ist deklarativ: "Gib mir alle Daten x, y, die folgende Bedingung erfüllen..."


SELECT note.ProjektId, note.Datum, note.Kategorie 
FROM WSAuftragNotiz note
    INNER JOIN WSAuftrag order ON (order.ProjektId = note.ProjektId AND order.Art = 20) 

WHERE 
    note.Kategorie IN ('3', '5')  AND 
   (order.StatusId IN (3, 4, 17)

(Ohne Gewähr, aber in der Art.)

LaTino
EDIT: bei einem inner join macht's mehr Sinn, von der "führenden" Tabelle auszugehen, also "SELECT x FROM order inner join note", aber sei's drum.

Thema: Prüfen ob Klasse/Unterklasse und Methode existiert (via String).
Am im Forum: Grundlagen von C#

Der Ansatz ist wirklich Schrott. Wieso bitte muss der Controller genauso heißen wie das, was in der Adresse steht? Schau dir mal das Routing in ASP.Net MVC an. Da das ziemlich genau das macht, was du auf Teufel komm raus selbst programmieren möchtest (nih-Syndrom, anyone?), wäre es wenigstens sinnvoll, sich einmal anzuschauen, wie das Problem richtig gelöst wird.

Sorry, aber ich bin kein Fan davon, alles selbst zu machen, weil man sich für schlauer hält. Du machst dir einen Aufwand mit einem sehr simplen Problem, dass schon zigmal gelöst wurde...stattdessen könntest du deine wertvolle Zeit in die Controller selbst stecken....

LaTino

EDIT: Abt war schneller. Ich lass es aber Mal so stehen.

Thema: XML Datei richtig in eine List<structur> laden.
Am im Forum: Grundlagen von C#

Müsste da nicht ein Tiles-Element mit beliebig vielen Tile-Subknoten sein?

Das Beispiel mit einem Tiles-Knoten liefert eine leere Liste in Boxes.Tiles, das mit mehreren ist invalid, weil Boxes ja nur eine Tiles-Property hat.

Benennung überdenken (TileList oder TileCollection statt Tiles), und/oder mit Attributen arbeiten.

LaTino
EDIT: autocorrect

Thema: Prüfen ob Klasse/Unterklasse und Methode existiert (via String).
Am im Forum: Grundlagen von C#

Auch scheint ihm der Unterschied von Subclass und Nested/embedded class nicht vertraut zu sein. @Froschkoenig, niemand hat bezweifelt, dass du schon programmiert hast. Das ist nach meiner Erfahrung genau das Problem:

- Anfänger machen sich mit der Sprache vertraut, und weil C# eine ausgezeichnete Sprache ist, um OOP zu lernen, kommt das quasi nebenbei kostenlos. Reflection wird erst viel später entdeckt.

- Leute aus dem Bereich PHP/C/Javascript hingegen versuchen ihre Erfahrungen mit den anderen Sprachen nach C# zu transportieren. Das geht nicht immer, also wird versucht, Unzulänglichkeiten mit Reflection zu lösen. Unglücklicherweise funktioniert das auch (erst einmal). Das Ergebnis ist aber kein guter Code und potenziell fehlerbehaftet. Und Fehler, die aus dem Einsatz von Reflection beruhen, lassen sich sehr, sehr schwer finden - das ist mit der größte Dreck, der einem unterkommen kann.

(Ich habe erst vor zwei Wochen einen Fehler aus einer alten ASP.NET-Anwendung suchen müssen, wo per Reflection aus den vorhandenen .dlls ein bestimmer Typ gesucht und instanziiert wurde, was zur Laufzeit in manchmal fehlgeschlagen ist, und manchmal nicht. War toll.)

Daher unser Bemühen, dich vor der dunklen Seite zu bewahren ;). Im Prinzip reicht der Schnipsel von Th69, um einen nested type zu finden. Sollte es noch weiter verschachtelt sein (was auch schon wieder für Murks in der Architektur spräche), müsste man u.U. rekursiv ran.

Wie T-Virus schreibt: Probleme, die man per Reflection löst (mit ganz wenigen Ausnahmen), sind meistens _mit etwas Aufwand_ sauber lösbar. Der Aufwand resultiert in weniger Problemen, die man später damit hat. Stell dir mal die Frage, was passiert, wenn jemand auf die Idee kommt, etwas zu refakturieren: die eingebettete Klasse rausziehen, und die Methode umbenennen. Das würde genauso kompilieren wie vorher, und erst in Rauch aufgehen, wenn man bei der Werksabnahme ist [1].

LaTino

[1] Wenn es mehrere Möglichkeiten gibt, wie etwas schief gehen kann, wird es auf die schlimmste Weise zum ungeeignetsten Zeitpunkt schief gehen. (Murphy)

Thema: Prüfen ob Klasse/Unterklasse und Methode existiert (via String).
Am im Forum: Grundlagen von C#

Zitat von CWolle
Ich versteh den Sinn nicht:
?(
Du musst doch wissen, was du programmieren willst! Und VisualStudio zeigt dir in einem Klappfenster doch immer alle vorhandenen Methoden an

Das ist wahr. Und jetzt:


object myObject = GetObjectFromExternalSource();

var myTestableObject = myObject as ITestable;
if(myTestableObject != null) myTestableObject.Test(0);
else throw new InvalidOperationException("Nanu. Das Objekt ist nicht, was ich erwartet hatte.");

Es gibt eine Enwturfszeit, und eine Laufzeit. Nicht immer sind zur Laufzeit dieselben Informationen vorhanden wie zur Entwurfszeit. Und Visual Studio hilft nur dem Entwickler in der Entwurfszeit. EDIT: man kann sich in so einem Fall mit Reflection helfen, es geht aber eben auch eleganter und sicherer. Darum geht's in diesem Thread.

LaTino

Thema: Prüfen ob Klasse/Unterklasse und Methode existiert (via String).
Am im Forum: Grundlagen von C#

Abt hat natürlich Recht, du brauchst ein Verständnis für OOP uns solltest dir das auch schnellstmöglich aneignen. Als kleiner Anschubser:


interface ITestable
{
    bool Test(int parameter);
}

class ExampleClass : ITestable
{
    public bool Test(int parameter) => parameter > 0;
}

class AnotherClass : ITestable
{
    public bool Test(int parameter) => parameter % 2 == 0;
}

public static void Main()
{
    Random random = new Random();
    ITestable testCandidate = random.Next() % 2 == 0 ? (ITestable)new ExampleClass() : new AnotherClass();
    //so. jetzt weisst du nicht mehr, was genau testCandidate eigentlich ist.
    //aber eins weisst du: du kannst auf jeden Fall eine Methode Test(int) aufrufen:
    Console.WriteLine(testCandidate.Test(0));
}


in der OOP folgen die Klassen festen Strukturen. So musst du nicht mehr raten, was in einem Objekt steckt, sondern da du die Struktur, also den allgemeinen Bauplan des Objektes kennst, weisst du jederzeit, was du damit machen kannst. Hier im Beispiel weisst du zwar nicht, WAS das Ergebnis von Test(0) sein wird, aber du weisst, dass es existiert und du es nutzen kannst. Das ist für jemanden, der bisher nur mit schwach bis gar nicht typisierten Sprachen Umgang hatte, kein ganz so schnell greifbares Konzept, daher, wie gesagt: schnapp dir ein Buch (nichtmal zu C#, sondern zu OOP) und arbeite es durch ist der beste Rat, den du kriegen kannst.

LaTino

Thema: Prüfen ob Klasse/Unterklasse und Methode existiert (via String).
Am im Forum: Grundlagen von C#

Reflection ist selten eine gute Idee, in ASP.NET noch seltener, weil der IIS die Laufzeitumgebung kontrolliert und du nie wissen kannst, welche Bibliothek sich gerade wo befindet (ja, die werden da fröhlich in temporäre Verzeichnisse kopiert, ein Nebeneffekt des on-the-fly-compilings).

In deinem Fall liefert GetType("C.EVENTS") vermutlich NULL.

EDIT: Wenn du sicherstellen willst, dass eine Methode vorhanden ist, definier ein Interface und lass die Klasse das implementieren. Gute alte OOP.

LaTino

Thema: Datenlisten immer nach gleichem Schema erstellen
Am im Forum: Code-Reviews

Zitat von Stefan.Haegele
Für viele nur eine Kleinigkeit - für mich im Code immer ein NoGo: SELECT *....

SELECT * FROM (SELECT id, name, age FROM people) WHERE rownum ≤100

"Immer" gibt es nicht.

LaTino

Thema: Typenabhängige Ausführung von unterschiedlichen Klassen über Dictionary
Am im Forum: Grundlagen von C#

a) verstehe ich nicht, worin sich IZeitschriftenbox und IBuchBox unterscheiden. Außer in den Namen jetzt. Das ist nach meinem Verständnis EINE Klasse.

b) du beziehst dich auf Klassen "Buch" und "Zeitschrift", die in einem externen SDK deklariert sind. Okay, gut, aber in deinem Codebeispiel kommt "Zeitschrift" gar nicht vor. Was sollen wir also mit der Information anfangen?

c) so, wie da Dictionaries verwendet werden, und auch der "SetzeInhalt"-Methode nach zu urteilen, besteht an irgendeiner Stelle ein grundlegendes Missverständnis, was objektorientieres Programmieren angeht.

Ich kann hier nur raten: wenn dein Problem ist, dass du zwei Klassen hast, die nicht miteinander verwandt sind, aber diese beiden Klassen gern generisch gemeinsam verwalten möchtest, dann:

- Schaffe ein gemeinsames Interface
- schaffe zwei Wrapperklassen, die dieses Interface implementieren, und jeweils Buch und Zeitschrift wrappen
- schaffe pro Wrapper vereinheitlichte Zugriffsmöglichkeiten auf Eigenschaften der gewrappten Objekte

(s.a. Facade-Pattern oder Proxy-Pattern oder Adapter-Pattern. Ich würde hier Facade bevorzugen.)

Dann kannst du zB eine allen gemeinsame Property "Seitenanzahl" einführen und direkt "SetzeInhalt" wegwerfen. (Und bitte, tu das. Reflection einzusetzen, um Architekturschwächen zu kompensieren, ist einfach nur bäh.)

LaTino
EDIT: @Palin: Kanone und Spatzen ;)

Thema: Community Version für hausinterne Software
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Zitat von Sir Rufo
Werden die Gehälter pünktlich bezahlt?
Ganz schön spitz heute morgen ;).

Gibt auch noch andere Lizensierungsmodelle, von denen möglicherweise eins besser auf euch passt als die blanke Stand-Alone-Lizenz. Es lohnt sich u.U., da mal gründlich recherchieren (zu lassen). Bei sowas haben sich BWLer als nützlich erwiesen ;).

LaTino

Thema: Community Version für hausinterne Software
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

https://www.visualstudio.com/de/license-terms/mlt553321/?rr=https%3A%2F%2Fwww.google.de%2F

Ich bin kein Rechtsverdreher, evtl habt ihr ja einen Justiziar, der euch beim Interpretieren helfen könnte. Aber so wie ich das lese: kauft euch eine Lizenz. So teuer sind die nun auch nicht, und ich bin sicher, dass im Budget für MS Office noch etwas Luft sein wird ;).

EDIT: Alternativ könntet ihr eure Lösungen auch als OSS freigeben. Macht manchmal durchaus Sinn.

LaTino

Thema: TextBox über Variable ansprechen
Am im Forum: Grundlagen von C#

Ja, das ist der Grund, wieso man eine Referenz nutzt, und nach Möglichkeit keine Zeichenkette: bei letzterem tauchen Fehler zur Laufzeit auf, nicht schon beim erstellen. [1]

Das wenn möglich von Abt liest du am besten als "so gut wie immer, und für meine Zwecke auf jeden Fall", dieses Gefrickel über den Namen möchtest du nicht, vertrau mir.

Mir ist nicht ganz klar, was dich daran hindert, aus der Methode mit der Signatur

public void FeldLeer(string valueFeldLeer)

eine Methode mit der Signatur

public void FeldLeer(Control control)

zu machen.

LaTino
[1] nennt sich "stringly typed code" und sollte vermieden werden

EDIT: die Signaturänderung ist genau das, was Th69 gemacht hat. Immer schön mit den Objekten arbeiten, und nicht mit Zeichenketten.

Thema: TextBox über Variable ansprechen
Am im Forum: Grundlagen von C#

"Ich bekomme es nicht hin" und "das scheitert kläglich" sind keine Fehlermeldungen.

Was hast du probiert, wie ist die Fehlermeldung, und wieso benutzt du nicht einfach direkt die Instanz des Controls?

LaTino

Thema: Unterschiedliche Methoden, gleiches Ergebnis (Entscheidungshilfe)
Am im Forum: Grundlagen von C#

Ein bisschen spät, aber mal ein anderer Gedankengang:

Ich finde Methode 1 deutlich schlechter, und zwar, weil "von außen", also in der Main-Methode, nicht erkennbar ist, dass Console-Output generiert werden wird. Nach dem Prinzip der geringsten Überraschung bevorzuge ich daher ganz klar Methode 2. Mit einer besseren Benennung wiederum werden die Vor- und Nachteile diesbezüglich allerdings nahezu aufgehoben. Ich würde vorschlagen:

Methode 1: PrintWelcomeText(string username)
Methode 2: GetWelcomeText(string username)

LaTino

Thema: Auslesen bestimmter Attribut-Werte aus einer XML-Datei über Linq to XML
Am im Forum: Grundlagen von C#


var result = 
    xDoc
    .Descendants("Gruppe")
    .Where(p => p.Attribute("name") != null && p.Attribute("name").Value == "Geometrie")
    .Select(ParseRectangle)
    .ToArray();
private static Rectangle ParseRectangle(XElement element)
{
    throw new NotImplementedException();
}

Sollte als Denkanstoß reichen.

LaTino

Thema: Auslesen bestimmter Attribut-Werte aus einer XML-Datei über Linq to XML
Am im Forum: Grundlagen von C#

Naja, vielleicht, weil das Attribut "name" heisst und nicht "Property name".

LaTino

Thema: Wie finde ich heraus welcher Prozess meine GUI blockiert?
Am im Forum: Grundlagen von C#

https://www.jetbrains.com/dotmemory/download/
https://www.jetbrains.com/profiler/download/

Free trial (5 Tage). Zeigt dir auch die üblichen Verdächtigen für Speicherlecks (dotMemory) und degrading performance (dotTrace) an. Ist ein bisschen Einarbeitung, wenn man noch gar nicht mit Profilern gearbeitet hat.

S.a. den Link von Palin.

LaTino
(btw, die Vollversion von Resharper enthält die beiden Tools schon, und die Lizenz ist auch für eine kleine Firma nicht vergeudet. Aber ich klinge schon wie 'ne Werbung.)

Thema: Wie finde ich heraus welcher Prozess meine GUI blockiert?
Am im Forum: Grundlagen von C#

Wenn's deutlich stockt - man kann auch jederzeit des debugging pausieren und sieht dann, wo in der Ausführung er sich grad befindet. Hilft manchmal.

LaTino

Thema: Stream mit offset lesen
Am im Forum: Rund um die Programmierung

Sir Rufo hat ja schon auf die Schwierigkeiten hingewiesen. Um denen zu begegnen:

a) verkleinere den gelesenen Buffer
b) behalt den jeweils zuletzt gelesenen Block
c) bilde aus dem aktuellen und dem zuletzt gelesenen Block einen einzigen und such den Delimiter dort
d) findest du ihn, schreib alles ab dem Delimiter
e) vergrößere den buffer wieder
f) lies und schreib den Rest

LaTino

Außerdem: kleine Schönheitskorrektur


//statt:
read = response.Read(buffer, 0, buffer.Length);
while (read > 0)
{
    fsContent.Write(buffer, 0, read);
    read = response.Read(buffer, 0, buffer.Length);
}
//das hier:
while((read = response.Read(buffer, 0, buffer.Length)) > 0)
    fsContent.Write(buffer, 0, read);

Thema: Wie paste ich den Wert der Zwischenanlage in fremde Applikation?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hm. Du schaltest dich in die Verwaltung der Zwischenablage über eine Win32-Methode ein, du hast - so verstehe ich es - einen globalen hook, der dir das Kontextmenü einblendet, du hantierst mit den Handles fremder Applikationen, und ausgerechnet bei SendKeys kriegst du Zweifel, ob das nicht gefrickelt ist?

Interop mit anderen Applikationen, was für deine Zwecke ja notwendig ist, ist immer Frickelei, einfach schon, weil das Betriebssystem Applikationen zu Recht als eigenständig betrachtet. In C++ wäre das nur nicht so aufgefallen.

LaTino

Thema: Duplicate Tag in SOAP-Body
Am im Forum: Netzwerktechnologien

Nachtrag noch:

Für solche Fälle ist eine "zweite Meinung" beim erstellen der Proxyklassen immer hilfreich. Ich meine damit: wenn es einem seltsam vorkommt, kann man mit einem anderen Tool noch einmal einen Proxy erstellen und dann vergleichen, wo die Unterschiede sind. Ein derartiges Tool wäre die wsdl.exe - das wäre auch deren einzig verbliebene Daseinsberechtigung ;).

LaTino

Thema: Duplicate Tag in SOAP-Body
Am im Forum: Netzwerktechnologien

So, ich hab das mal gerade bei mir ausprobiert. Sieht für mich so aus, als hätte svcutil Schwierigkeiten, den MessageContract mit Attributen entsprechend umzusetzen, und fügt einen - so sieht es für mich aus - überflüssigen Wrapper um den Request hinzu. Wenn du den äußeren MessageContract ersetzt, sollte alles aussehen wie gewünscht. Kann's momentan hier nicht austesten.

Das hier ist der überflüssige Wrapper:


[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
[System.ServiceModel.MessageContractAttribute(IsWrapped=false)]
public partial class couponActivationRequest1
{
[System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://www.loyaltypartner.com/lm/core/couponing/couponactivation/types", Order=0)]
    public CouponActivationRequest couponActivationRequest;
    
    public couponActivationRequest1()
    {
    }
    
    public couponActivationRequest1(CouponActivationRequest couponActivationRequest)
    {
        this.couponActivationRequest = couponActivationRequest;
    }
}

Grüße,

LaTino

Thema: Duplicate Tag in SOAP-Body
Am im Forum: Netzwerktechnologien

Poste mal bitte die relevanten Teile der WSDL (oder, wenn öffentlich, 'ne Adresse zur vollständigen). Habe noch nie erlebt, dass svcutil etwas anderess tut als das, was die WSDL sagt.

LaTino

Thema: Duplicate Tag in SOAP-Body
Am im Forum: Netzwerktechnologien

(Packs bitte noch zwischen zwei CSHARP-Tags, ist dann lesbar, danke!)

Das ist nicht die Klasse, die als Datacontract dann serialisiert wird, sondern die innere Klasse. Wenn man den Code etwas bereinigt (was man IMMER machen sollte, nimm dir die Zeit bitte), sieht sie so aus:


public class CouponActivationRequest
{
    [XmlElement(ElementName = "couponActivations", Form = XmlSchemaForm.Unqualified)]
    public CouponActivationRequestCouponActivations CouponActivations { get; set; }

    [XmlAttribute(AttributeName = "version")]
    public string Version { get; set; }

    [XmlAttribute(AttributeName = "requestId", DataType = "positiveInteger")]
    public string RequestId { get; set; }

    [XmlAttribute(AttributeName = "command")]
    public Command Command { get; set; }

    [XmlAttribute(AttributeName = "compensationForRequest", DataType = "positiveInteger")]
    public string CompensationForRequest { get; set; }
}

Na, ist doch gleich viel ordentlicher. Schau mal, ob du noch eine Klasse hast, die den CouponActivationRequest als Member hat. Strg+Shift+F, Suche nach "private CouponActivationRequest". Das ist dein Übeltäter.

LaTino

Thema: Duplicate Tag in SOAP-Body
Am im Forum: Netzwerktechnologien

Ist ein Fehler im DataContract. Wo genau, ist schwierig ohne Code :o).

LaTino

(EDIT: und wieso generierst du den notwendigen Code nicht einfach aus der WSDL und passt ihn dann an?)