Her ikisi ile yapabilecekler arasında ayrı bir çakışma var. ComponentModel, System.Reflection öğesinin üst kısmındaki biraz daha dostça bir katman yansıyor mu?ComponentModel yansıması (ör. PropertyDescriptor) ve standart yansıma (ör. PropertyInfo) arasındaki fark nedir?
cevap
Hayır - daha fazlası var. ComponentModel, çalışma zamanı özellikleri gibi birkaç DLR türü şey yapmanızı sağlar. DataView sütunları bir kılavuza nasıl yansıtır - yansıma özellikleri değil - çalışma zamanı özellikleridir. Buradaki anahtar kelimeler ICustomTypeDescriptor
ve TypeDescriptionProvider
'dur.
Bu model aynı zamanda soyutlamaya ve indirmeye de olanak tanır. Eğer özelliklerine yansıma yapıyoruz Örneğin, HyperDescriptor düşünün - bu ben bu büyük performans artışı, önceden derlenmiş model için yansıma modelini takas için özel PropertyDescriptor
uygulaması kullanan yazdığı bir yardımcı programdır.
, diğer bazı farklılıklar vardır; ComponentModel, yalnızca bir üye üzerindeki herhangi bir öznitelik örneğini destekler (yansımadan farklı olarak, birden çok benzer özniteliğin izin verdiği durumlarda). Ve bu veri merkezlidir - bu nedenle, olaylar (öncelikli olarak değişim bildirimi için tasarlanmıştır) gibi özellikler mevcuttur, ancak hiçbir alan ve yöntem yoktur.
Aynı zamanda i18n için de iyi bir desteği vardır - çünkü DisplayName vb. Anında özelleştirilebilir. Bununla birlikte, ComponentModel yansıma verilerine bağlanmak istediği için LINQ (özellikle MemberExpression) gibi şeylerle (doğrudan) uyumlu değildir.
Son olarak, ComponentModel, PropertyGrid gibi nesneler tarafından IDE'de oldukça kullanıldı (bu, araç ipuçları için ekstra özellikler gibi işlerin nasıl yapıldığı gibi), ancak hemen hemen tüm UI veri bağlamasının ComponentModel aracılığıyla gerçekleşmesidir (DataTable'ı, sınıfları ve aklınıza gelen diğer her şeyi destekleyin).
- 1. Standart kitaplık ve standart şablon kitaplığı arasındaki fark nedir?
- 2. Mükemmel sütun sütun alfabesini (ör. AA) sayıya (ör., 25) dönüştürün (ör., 25)
- 3. ImageMagick ve GraphicsMagick arasındaki fark nedir?
- 4. Bir javascript regex eşleşmesini ör.
- 5. Akka'da sor ve anlat arasındaki fark nedir?
- 6. IsAssignableFrom ve GetInterface arasındaki fark nedir?
- 7. Standart boyutta bir WPF düğmesini (ör. Tamam) nasıl yaparım?
- 8. Grafik Veritabanı ve Ağ Veritabanı arasındaki fark nedir?
- 9. Python'da {} ve [] arasındaki fark nedir?
- 10. UNIX'teki $ @ ve $ * arasındaki fark nedir?
- 11. $ arasındaki fark nedir? ve PowerShell
- 12. Tüm os.popen() yöntemleri arasındaki fark nedir?
- 13. Task.Factory.FromAsync ve BeginX/EndX arasındaki fark nedir?
- 14. Fark() arasındaki fark nedir mustache.js
- 15. Web kullanıcısının dilini algıla, ör. JavaScript’te
- 16. arasındaki fark nedir?
- 17. Java arasındaki fark nedir
- 18. arasındaki fark nedir?
- 19. arasındaki fark nedir?
- 20. ScalaTest ile JUnit @Rule kullanma (ör. TemporaryFolder)
- 21. GetValue, GetConstantValue ve GetRawConstantValue arasındaki fark
- 22. Mocha ile Javascript testinde assert.equal ve assert.deepEqual arasındaki fark nedir?
- 23. Çapraz platform için statik kaydedici, ör. Java (Applet) ve Android
- 24. GetGetMethod yöntemi ve GetMethod özelliği arasındaki fark nedir?
- 25. Bu iki bağlantı arasındaki fark nedir?
- 26. app.doScript ve $ .evalFile arasındaki fark nedir?
- 27. gVim ve gVim arasındaki fark nedir?
- 28. isAlpha ve isLetter arasındaki fark nedir?
- 29. Control.Enter ve Control.GotFocus olayları arasındaki fark nedir?
- 30. .got ve .got.plt bölümü arasındaki fark nedir?
Bunun, tepelerden daha eski olduğunu biliyorum, ancak System.ComponentModel yansıması için kullanıyorsanız, LINQ'da yapabileceğiniz ve yapamayacağınız bazı şeyleri açıklayabilir misiniz? – wootscootinboogie
@woot bu kısa bir cevap: LINQ ComponentModel hakkında önemli değil –