Kısa bir süre önce, aracı hızlı bir şekilde almak için aracı büyük veritabanlarında kullanmak amacıyla sorgu sonuçlarını CSV biçimine indirecek LinqPad için bir araç oluşturma projesi üstlendim. Aracın dışında istediğim bir şey, Visual Studio ve LinqPad'de çalışabilmesi. Bu yüzden, eğer LinqtoSQL'i VS2010 veya LinqPad'de kullanıyor olsaydım, sonuçları bir csv dosyasına hızlıca dökebilir ve sonuçları görüntülemek için Excel'e açabilirim.LinqPad neden Özellikler yerine Alanlar oluşturur?
Projedeki en büyük engel, LinqPad'in DataContext'lerini nasıl oluşturduğuna ve Visual Studio'nun DataContext'lerini nasıl oluşturduğuna dayanıyordu. LinqPad'in nasıl yaptığını bulabildiğim en iyi bilgi here'dan geliyor. Temel olarak, projemden bulduğum şey, VS2010'un DataContexts için özellikler yaratmasıydı, ancak LinqPad, Fields'ı yaratıyordu. Yansıma kullanarak Böylece zaman:
linqpad:
dataContextType.GetProperties() //returns 0
dataContextType.GetFields() //returns the Fields from LinqPad created DataContext
VS 2010 LinqToSQL:
dataContextType.GetProperties() //returns the Properties from VS created DataContext
dataContextType.GetFields() //returns 0
Peki neden LINQPad kendi DataContexts içinde Özellikler yerine Fields kullanıyor? Visual Studio LinqToSQL kalıbını kopyalamak daha uygun olmaz mıydı?
Ben de LinqPad forum içinde aynı soru sormak için karar bir yorum dayanarak Güncelleme
.
Bu, LinqPad'in yazarlarına yönlendirilmemeli midir? : D Her halükarda, hem FieldInfo hem de PropertyInfo, MemberInfo'dan devralır, böylece kodunuzu her iki durumda da (biraz çimdikleme yaparak) yeniden yazabilirsiniz. – Jonas
@Jonas StackOverFlow için hala iyi bir bilgi. Her ikisi de MemberInfo'dan miras alsalar da, ikisinin de her ikisini de kullanmam gereken farklı GetValue() yöntemlerine sahipler. – jsmith