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 RX8
Thema: Equals - Eigene Klasse um die Funktion Equals erweitern.
Am im Forum: .NET-Komponenten und C#-Snippets

Ok, ich gehe natürlich davon aus, dass kein Objekt eines anderen Tys verwendet wird. Für meinen speziellen Fall hatte ich eine einfache Möglichkeit gesucht ein komplexes Objekt zu vergleichen und es funktioniert ja auch. Aber ich sehe ein das mein Snippet nicht allgemein zu gebrauchen ist.
Kann ich den Beitrag löschen, kann der Admin ihn löschen, oder wie soll ich verfahren?

Thema: Equals - Eigene Klasse um die Funktion Equals erweitern.
Am im Forum: .NET-Komponenten und C#-Snippets

Zitat von LaTino
Da der Vergleich auf Serialisierung basiert, wird er unter bestimmten Voraussetzungen fälschlich true liefern, obwohl die Objekte verschieden sind, oder umgekehrt.

LaTino

Hallo LaTino

Das Snippet ist als Erweiterung der zu vergleichenden Klasse gedacht und funktioniert bei mir einwandfrei. Wenn ich also das Objekt mit dem Ursprungsinhalt mit einem Objekt der selben Klasse aber mit abgeänderten Inhalt darüber vergleiche, warum soll das mal so und mal anders funktionieren?

Hallo MarsStein

Unter den oben genannten Bedingungen ist der Typ<T> doch bekannt?

Wenn ihr aber der einhelligen Meinung seid, aufgrund eurer tieferen Kenntnis der Sprache c#, das Snippet sei ungeeignet für eine Veröffentlichung, löschen ich es selbstverständlich.

Thema: Equals - Eigene Klasse um die Funktion Equals erweitern.
Am im Forum: .NET-Komponenten und C#-Snippets

Beschreibung:
Die Erweiterung basiert auf einem Dateivergleich. Die Dateien werden aber nicht auf einen Datenspeicher geschrieben sondern nur temporär in einen XML-Memorystream.

Aber das Snippet ist nicht generell zu verwenden. Es funktioniert nicht wenn z.B. in einer Klasse Elemente vom serialisieren ausgeschlossen sind, oder wenn sie als privat deklariert sind.

Wenn man aber die Ursprungsklasse so wie auch gespeichert wird, also ohne die ausgeschlossenen Parameter, mit der geänderten Klasse vergleichen will (was ja wohl die Regel ist) funktioniert es sehr wohl.

Bitte die nachfolgende Diskussion beachten.

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
	<CodeSnippet Format="1.0.0">
		<Header>
			<SnippetTypes>
				<SnippetType>Expansion</SnippetType>
			</SnippetTypes>
			<Title>Equals</Title>
			<Author>Klaus Ruttkowski</Author>
			<Description>Compares the object (class) "this" to another object (class).</Description>
			<HelpUrl>
      </HelpUrl>
			<Shortcut>
      </Shortcut>
		</Header>
		<Snippet>
			<Imports>
				<Import>
					<Namespace>System.Collections.Generic</Namespace>
				</Import>
				<Import>
					<Namespace>System.Text</Namespace>
				</Import>
				<Import>
					<Namespace>System.IO</Namespace>
				</Import>
				<Import>
					<Namespace>System.Xml.Serialization</Namespace>
				</Import>
				<Import>
					<Namespace>System.Xml</Namespace>
				</Import>
				<Import>
					<Namespace>System.Drawing</Namespace>
				</Import>
				<Import>
					<Namespace>System.Linq</Namespace>
				</Import>
			</Imports>
			<Code Language="csharp" Delimiter="$"><![CDATA[
#region Equals
// Calls
// this.Equals(ComparisonObject);
//
public bool Equals<T>(T value)
{
	int file1byte;
         int file2byte;

         MemoryStream memoryStreamX = new MemoryStream();
         MemoryStream memoryStreamY = new MemoryStream();

         var settings = new System.Xml.XmlWriterSettings { Encoding = Encoding.UTF8, CheckCharacters = false, NewLineHandling = NewLineHandling.None, };
         using (XmlWriter xmlWriter = XmlWriter.Create(memoryStreamX, settings))
         {

         	XmlSerializer serializer = new XmlSerializer(typeof(T));

                	serializer.Serialize(xmlWriter, this);
         }
         using (XmlWriter xmlWriter = XmlWriter.Create(memoryStreamY, settings))
         {

         	XmlSerializer serializer = new XmlSerializer(typeof(T));

                	serializer.Serialize(xmlWriter, value);
         }
         // Check the file sizes. If they are not the same, the files 
         // are not the same.
         if (memoryStreamX.Length != memoryStreamY.Length)
         {
         	// Return false to indicate files are different
                	return false;
         }

         // Read and compare a byte from each file until either a
         // non-matching set of bytes is found or until the end of
         // file1 is reached.
         do
         {
         	// Read one byte from each file.
         	file1byte = memoryStreamX.ReadByte();
                	file2byte = memoryStreamY.ReadByte();
         }
         while ((file1byte == file2byte) && (file1byte != -1));

         // Return the success of the comparison. "file1byte" is 
         // equal to "file2byte" at this point only if the files are 
         // the same.
         return ((file1byte - file2byte) == 0);
}
#endregion
]]></Code>
		</Snippet>
	</CodeSnippet>
</CodeSnippets>


Schlagwörter: Equals, Class, Vergleich

Thema: Installer und Installer class in C#
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

BerndFfm hat Recht. Es lohnt sich wenn du dich mit Wix befasst. Ich finde WixEdit ist eine gute Basis hierzu.

Thema: RFID Funktionsweise (Wie programmieren)
Am im Forum: Rund um die Programmierung

Ein Freund, der dienstlich mit RFID zu tun hat, verweist auf die ISO 7816. Dort wirst du alle gesuchten Informationen finden!

Siehe auch hier:
Radio Frequency Identification by Steven Shepard

Thema: RFID Funktionsweise (Wie programmieren)
Am im Forum: Rund um die Programmierung

Hast du hier schon nachgelesen?
RFID

Hier sind zu dem Thema so viele Informationen vermerkt, dass du mit Fleiß aber ev. auch Kosten bestimmt weiter kommst.

Thema: WPF-Designer: Der Name x ist im Namespace y nicht vorhanden
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Kann es sein, dass das Control für eine niedrigere NET-Version kompiliert wurde las du aktuell verwendest?

Thema: Eigene .config Dateien laden und wie bisher per ...Default.Variable darauf zugreifen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Ich habe einen Lösung (ItemTemplate) für das Handling der Konfiguration erstellt, bei der man auch den Namen und den Speicherort der Konfigurationsdatei angeben kann.
Eventuell kannst du diese benutzen.

RuConfigManager

Gruß Klaus

Thema: XML für SEPA erstellen
Am im Forum: Rund um die Programmierung

Du hast dich wohl verschrieben und meinst die Umstellung von DTA auf SEPA.

Hier ein Link zu einer SEPA-API. Die private Nutzung ist kostenlos.

http://subsembly.com/de/sepa-api.html

Gruß Klaus

Thema: Kein englischsprachiges Setup mit deutschen VS2010
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Ja, man kann. Die unterschiedlichen Sprachabhängigen Dialoge liegen unter Common7/Tools/Deleoyment/VsdDialogs/1031...1033 usw.
Die Ursache scheint einen andere zu sein.

Thema: WiX - Uninstall - Config nur bei Bestätigung einer Benachrichtigung entfernen
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo,

ich hatte vor kurzen auch das Problem, dass sich etwas nicht deinstalieren ließ.
Ursache war die Guid der Komponente.
Ich hatte ein wiederverwendbares Grundgerüst der wxs-Datei benutzt, aber nicht alle enthaltenen Guid's geändert. Könnte dies bei dir auch so sein?

Thema: Installieren mit Parameter C#-Projekt
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

WixEdit ist ein hervorragender Editor wenn man lieber eine Gui benutzt.