2016-03-21 28 views
0

Bu benim kod benim kamu Form1()Statik Olmayan Sınıflar

while (accessReader.Read()) 
    { 
     for (int i = 0; i < count; i++) 
     { 
     string urlpart2= accessReader.GetValue(i).ToString(); 
     WebRequest request = WebRequest.Create("urlpart1" + urlpart2+ "urlpart3"); 
     string json; 
     var response = request.GetResponse(); 
     request.ContentType = "application/json; charset=utf-8"; 

     using (var streamr = new StreamReader(response.GetResponseStream())) 
     { 
      json = streamr.ReadToEnd(); 
      List<MyObject> list = JsonConvert.DeserializeObject<List<MyObject>>(json); 
      var date = MyObject.Start; 

      //MessageBox.Show(date.ToString()); 

farklı değişkenler benim json dize temsil benim sınıf budur

public class MyObject 
     { 
      public int Type { get; set; } 
      public string Country { get; set; } 
      public string Channel { get; set; } 
      public string Code { get; set; } 
      public DateTime Start { get; set; } 
      public DateTime End { get; set; } 
     } 

döndürür Bu mi böyle görünüyor vs Statik Bir json dizgisi ne dönecek, değişecek tek fark belki de tip, kod, başlangıç ​​ve bitiş. - Başlangıç ​​ve Bitiş Değerlerini istiyorum.

[{"Type":1,"Country":"CA","Channel":"","Code":"1EZ","Start":"2014-10-24T00:00:00","End":"2015-10-23T00:00:00"},{"Type":2,"Country":"","Channel":"","Code":"UAD","Start":"2014-10-24T00:00:00","End":"2017-10-23T00:00:00"},{"Type":2,"Country":"","Channel":"","Code":"TPQ","Start":"2014-10-24T00:00:00","End":"2017-10-23T00:00:00"},{"Type":3,"Country":"","Channel":"","Code":"SVC_PRIORITY","Start":"2014-10-24T00:00:00","End":"2017-10-23T00:00:00"}] 

Ben programlama için oldukça yeni ve ben gerçekten 'Bir nesne başvurusu statik olmayan alan, yöntem veya özellik için gereklidir' anlamıyorum bir hata içine doldu. Benim Projesi Çözüm yeni bir sınıf oluşturarak aksine

Ayrıca ben (bu konularda?) benim Form1.cs içinde bu sınıf oluşturuldu

cevap

4

Bunu bir statik özelliği veya alan olacak gibi MyObject.Start erişmeyi deneyin. Ancak, bir örnek alanıdır ve temel olarak alana erişmek için bir örnek almanız gerekir.

MyObject obj = list[0]; 
var date = obj.Start; 

alan List<MyObject> list = ... json dosyasından serileştirilemezse var tüm verileri içerir (Ve hiçbiri hiçbir veri json dosyasında varsa!).

Sanırım json dosyasının tüm verilerine erişmek istersiniz, bu durumda bir foreach döngüsüyle nesneler arasında yineleme yapmayı tercih ederim.

foreach (MyObject item in list) { .... } 
+0

Oooooh görüyorum! Bu yüzden onları Tip 1'in Başlangıç ​​Tarihi ve Bitiş Tarihi, Tip 2'ler ... ve Tip 3'leri gibi ayırmak için ... foreach (MyObject tipi, başlangıç, son öğe)() listesinden yapabilir miyim? – Havoux

+0

@Havoux Tüm veriler tek bir MyObject örneğinde. Jsonunuzda birden fazla varken, tüm bunları yinelemek yararlıdır. Yoksa seni yanlış mı anladım? –

+0

Nope var 100% Çok teşekkür ederim efendim! – Havoux

1

sorun Sen MyObjects bir listesini oluşturduk var date = MyObject.Start; hattı ile olduğunu. Bunlara erişmek için liste indekslerini kullanmalısınız, yani var first = list[0] ilk elemanı döndürür. aşağıdaki gibi foreach döngü kullanabilirsiniz listenizin her girdiyi işlemek amacıyla first.Start : Sonra gerekli alabilirsiniz tarih

foreach (var obj in list) { 
    // use obj.Start, obj.End values 
} 
İlgili konular