C-Sharp-und-Net Tipps, Tricks, Test und Meinungen!


Apple-Hardware Digital-Foto Digital-Video Elektronik Notebook PC-Hardware PC-Kauftipps PC-Tuning Linux System Netzwerke Novell Windows 2000 Windows 95 Windows 98 Windows ME Windows NT Windows Vista Windows XP Access Apple-Software Backoffice CAD/CAM Corel Excel Linux Lotus PC-Grafik PC-Software Photoshop Powerpoint SQL Star-Office Word ASP C (K&R) C# -.Net C++ Delphi Dreamwaver Flash HTML/CSS Internet Java JavaScript PHP Perl Visual-Basic Webdesign XML Handy / Co. Klassik Computer PC-Allgemein Pocket-PC Sicherheit/Viren Onlinegaming PC-Games Spielekonsolen IE / Outlook NN / Mozilla Opera Fitness Gesundheit Mountainbike Car-HiFi Kfz-Allgemein Kfz-Tuning Motorrad Bücher Haustiere Heimwerken Job Musik Musikprod. Reisen Studium TV / Kino Unterhaltungselektronik
Google-Anzeigen


Hilfe zum Thema: C-Sharp-und-Net, Lesen, Klasse
2 unbekannte Objekte miteinander synchronisieren
Hi,
ich habe ein kleines Problem: Ich habe zwei unbekannte Objekte, von denen ich nicht weiß (oder wissen möchte), welche Properties etc. diese haben. Nun möchte ich das eine Objekt mit den Inhalten des anderen Objektes ersetzen, sprich synchronisieren, wenn sich die Werte in den Objekten unterscheiden.
Das Problem ist, dass ich zwar alle Properties dynamisch auslesen kann, aber die Zuordnung Objekt1.PropertyValue = Objekt2.PropertyValue nicht hinbekomme, da ich nicht weiß, welches Property ich in dem anderen Objekt aufrufen muss.
Mein Beispiel basiert auf einer Sprachen-Klasse:
Public Class Language
Private m_strName As String = String.Empty
Public Property Name() As String
Get
Return m_strName
End Get
Set(ByVal value As String)
m_strName = value
End Set
End Property
Public Sub New(ByVal strLanguage As String)
m_strName = strLanguage
End Sub
Public Sub New()
End Sub
End Class
Jetzt erstelle ich zwei Objekte und möchte diese synchronisieren mit Reflection:
Imports System.Reflection
Module Module1
Sub main()
Dim dict As Dictionary(Of String, Language) = New Dictionary(Of String, Language)
Dim oLang As New Language("german")
Dim oLang1 As New Language("english")
dict.Add(oLang.Name.ToLower, oLang)
dict.Add(oLang1.Name.ToLower, oLang1)
GetPropertiesData("", "Language", dict)
Console.WriteLine()
Dim oLangNew As New Language("deutsch")
SetPropertiesData("", "Language", oLang, oLangNew)
Console.ReadLine()
End Sub
'todo: noch das dict als parameter generisch machen! evtl. über generics.
Public Sub GetPropertiesData(ByVal strNamespace As String, ByVal strClassname As String, ByVal dict As Dictionary(Of String, Language))
Dim objType As Type = Nothing
If String.IsNullOrEmpty(strNamespace) Then
objType = Assembly.GetExecutingAssembly.GetType(Assembly.GetExecutingAssembly.GetName.Name & "." & strClassname, False, True)
Else
objType = Assembly.GetExecutingAssembly.GetType(strNamespace & "." & strClassname, False, True)
End If
For Each objPropInfo As PropertyInfo In objType.GetProperties
For Each oLang As Language In dict.Values
Console.WriteLine("PropName: " & objPropInfo.Name & " PropValue: " & objPropInfo.GetValue(oLang, Nothing).ToString)
Next
Next
End Sub
Public Sub SetPropertiesData(ByVal strNamespace As String, ByVal strClassname As String, ByVal objLangOld As Language, ByVal objLangNew As Language)
Dim objType As Type = Nothing
If String.IsNullOrEmpty(strNamespace) Then
objType = Assembly.GetExecutingAssembly.GetType(Assembly.GetExecutingAssembly.GetName.Name & "." & strClassname, False, True)
Else
objType = Assembly.GetExecutingAssembly.GetType(strNamespace & "." & strClassname, False, True)
End If
For Each objPropInfo As PropertyInfo In objType.GetProperties
'objType.GetProperty("????").SetValue(objLangOld, objLangNew, Nothing)
'todo: entsprechendes property (objpropinfo) bei objlang... holen u. davon wert setzen
objPropInfo.SetValue(objLangOld, objLangNew, Nothing)
Console.WriteLine("PropName: " & objPropInfo.Name & " PropValue: " & objPropInfo.GetValue(objLangOld, Nothing).ToString)
Next
End Sub
End Module
Ich hoffe ich habe mich verständlich ausgedrückt. Ich würde mich riesig freuen, wenn jemand das Problem schon gelöst hat :-)
Viele Grüße
Johannes


Google-Anzeigen


Weitere Informationen zu diesen Themen:   Unbekannte   Objekt   Objekte  
Geschickt von johannes6, Mi 30.04.2008 22:25

Google-Anzeigen


Warum immer zahlen? Einfach kostenlose Software downloaden:
Kostenlose
Spiele

Kostenlos spielen!
Kostenlose
Fotosoftware

Kostenlose Fotosoftware!
Kostenlose
Terminplaner

Kostenlose Terminplaner!
Kostenlose
3D Simulatoren

Kostenlose 3D-Simulatoren!
Kostenlose
PC-Tools

Kostenlose PC-Utilities!
Kostenlose
Brettspiele

Kostenlose Brettspiele!
Kostenlose
MP3 Tools

Kostenlose MP3-Tools!

Kostenlose Android Apps für Tablet PCs wie dem Galaxy Tab und Xoom
Free android tablet app downloads: Games, Security, Antivirus, Filemanager for your Tab.
Kostenlose Software-Grundausstattung für Windows-PCs Kostenlose Software-Vollausstattung für Windows-PCs
Kostenlos spielen - Spiele Downloads ohne Limits

cs
es
fr
it
no
pl
pt
tl
tr
ru

Spotlight.de distanziert sich ausdrücklich von im Forum eingestellten Fremdinhalten jeglicher Art.


Kostenlose
Antiviren-
software!
Kostenlose Antivirensoftware!


Kostenlose
Spiele!
Kostenlose Spiele!


Android
Apps für
Tablet-PCs!
Andriod Tablet Apps z. B. für Samsung Galaxy Tab


Kostenlose
3D-
Simulatoren!
Kostenlose 3D-Simulatoren!


Kostenlose
PC-Utilities!
Kostenlose PC-Utilities!


Kostenlose
Terminplaner!
Kostenlose Terminplaner!


Kostenlose
Grafik-
software!
Kostenlose Grafiksoftware!