XML
dosyasından bir ObservableCollection
dosyasına genel olarak eklemek için bir yöntem oluştururken, her kayıt sonuncudur.XML dosyasından gelen GözlemlenebilirKoleksiyon genel olarak
ben birden ObservableCollection
içine birden XML
dosyaları yüklemek gerekir. Bu yalındır yeterli, ancak bu ObservableCollection
birden Classes
kapalı tabanlı ve daha fazla mevcut Classes
değişiklik XML
dosyanın okunması yansıtılması olurdu bahsetmiyorum, eklenecektir. Bu yüzden, genel bir ObservableCollection<object>
döndürecek bir yönteme sahip olmanın bunu çözeceğini düşünmüştüm. Yöntem çağrıldığında, ObservableCollection
'un Class
10'u böyle bir şey yapar;
MyClass c = new MyClass();
GetXMLData(c);
Daha sonra, her bir XElement Yöntemi için her Mülk değerini şöyle ayarlayacağım;
public ObservableCollection<object> GetXMLData(object value)
{
string fName = "MyPath";
ObservableCollection<object> tableData = new ObservableCollection<object>();
FileStream fs = new FileStream(fName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
{
XDocument fileXML = XDocument.Load(fs);
var dataXML =
from x in fileXML.Descendants("MyData")
select x;
foreach (XElement x in dataXML)
{
var data = (object)value;
foreach (var prop in value.GetType().GetProperties())
{
PropertyInfo propertyInfo = data.GetType().GetProperty(prop.Name);
propertyInfo.SetValue(data, Convert.ChangeType(x.Attribute(prop.Name).Value, propertyInfo.PropertyType), null);
}
tableData.Add(data);
}
}
return tableData;
}
Bu tür işler ancak bir sorun var. Ben değeri hakkında veri döküm am beri her kayıt tableData son rekor okunur.
Say XML veri şuna benzer:
<Item Field1="Bob" Field2="10" />
<Item Field1="Mike" Field2="20" />
<Item Field1="Sam" Field2="30" />
Eğer ObservableCollection<object>
bakarsak Bunu görmek:
Field1="Sam", Field2="30"
Field1="Sam", Field2="30"
Field1="Sam", Field2="30"
yerine bu görme:
Field1="Bob", Field2="10"
Field1="Mike" Field2="20"
Field1="Sam" Field2="30"
Notlar:
- Orada olmayan hatalı verileri ele alma hatası için mantığım var. Yani
- güvenle Sınıf
düzenlemek için mükemmel XML dosyası maçın niteliklerini varsayabiliriz olduğunu görmezden: sorumu aydınlatmaya çalıştı. Üzgünüm sadece ne yapmadığımı göstermek istedi "Hey nasıl yapıyorsun?"
* tam * Sorunuz nedir? Burada sorulan belirli bir soru göremiyorum. – GEEF
@GEEF Lütfen soruya daha açık bir şekilde değindim. – Xaphann