kullanarak değer tiplerinin bir örneğini oluşturmak , System.String
System.Boolean
, System.Int32
vb ben System.String
veyaMyNamespace.Employee
gibi türleri nitelikli isimleri almak ve oluşturmak zorunda bir örnek ve geri dönün. Örnekler oluşturmak için Activator.CreateInstance
ve FormatterServices.GetUninitializedObject
kullanıyorum. Ancak, değer türleri durumunda başarısız olur. Değer tipleri durumunda mantığı kodlayamıyorum. Hem değer türlerinin hem de referans türlerinin örneklerini oluşturmanın genel bir yoluna ihtiyacım var.nasıl gibi değer türleri bir örneğini oluşturmak istediğiniz yansıma
cevap
Tam olarak ne yapmaya çalışıyorsunuz? FormatterServices.GetUninitializedObject
, esas olarak serileştirme kodu ile kullanılır; Bunun dışında gerçekten kullanmamalısınız. Sadece tam olarak
TypeConverter tc = TypeDescriptor.GetConverter(someType);
object obj = tc.ConvertFromString(s);
Teşekkürler yardımcı oldu. –
Oh, jenerik şeyler için çok güzel :) – Nyerguds
başarısız Ne (bu türler için) yani TypeConverter
gibi bir şey, ihtiyacınız varmış gibi sesler?
var instance = Activator.CreateInstance(typeof(Int32));
Bana tam olarak kod başarısız 0'a
olarak ayarlanmış bir Int32 örneğini verir: Ben değer türleri ile ilgili bir sorun olup olmadığını görmek için aşağıdaki kodu çalıştı? Aksi halde sorunun, örneği oluştururken değil, türünü yükleme biçiminde yattığını söyleyebilirim.
Eish Jaco! 'Var' bir 'int' olarak değiştirmeye geri döndüm, çünkü 'var' durumu OP'ye yabancı değildi ve siz de benim gibi aynı kod satırına gizlice girdin. :-) – ProfK
Haha - çekilişte çabuk olmalısınız :-) –
Bu benim için çalışıyor: BCL Değer Türleri İçin
int x = (int)Activator.CreateInstance(typeof (Int32), true);
(ve türlerini tanımlamak için dizeleri kullanarak) C# anahtar kelime kullanmadığından emin ve Tip ad ile tam olduğundan emin olun. Örneğin, C# int başarıyla "Int32"
gibi "int"
veya kısa formları gibi dile özgü adlar kullanmayı denerseniz başarısız girişim alacak Activator.CreateInstance (..)
object num = Activator.CreateInstance(Type.GetType("System.Int32"));
ile bu şekilde oluşturulur.
- 1. . NET Yansıma: Kullanılan türleri bul
- 2. Yansıma ile Java'daki türleri nasıl karşılaştırabilirim?
- 3. Constructor nesnesinden argümanlar türleri al (Java Yansıma)
- 4. C# IronPython'u yerleştirirken değer türleri nasıl kullanılır?
- 5. ggplot2: Böyle bir grafik oluşturmak istediğiniz grubun
- 6. Javamail API - setFrom'u istediğiniz gibi nasıl değiştirirsiniz?
- 7. Haxe - bir dize adından bir sınıfın örneğini oluşturmak
- 8. Libgdx CubemapAttribute: Libgdx'in CubemapAttribute'u yansıma oluşturmak için nasıl kullanabilirim?
- 9. yansıma
- 10. Değer türleri birbirinden dökülebiliyorken neden bir değer türünde bir sözlüğü başka bir değer türünde sözlüğe dönüştüremiyorum?
- 11. Neden bir COM arabiriminin yeni bir örneğini oluşturmak mümkün?
- 12. Bir ObjectSet örneğini nasıl oluşturabilirim?
- 13. java yansıması oluşturmak için alan/değer hashmap
- 14. Yansıma
- 15. Scala Kullanarak 2.10.1 Java'da Değer Türleri
- 16. Yansıma?
- 17. Ben özel metin ile bir Gtk.StatusIcon oluşturmak istediğiniz Metin
- 18. yansıma
- 19. Bir sınıf örneğini DWScript
- 20. Varsayılan değer, jenerik türleri kullanarak kontrol edin
- 21. Değer aşağıdaki ifadeyi oluşturmak çalışıyorum
- 22. "Bu" anahtar kelime, değer türleri ile kullanılabilir mi?
- 23. Silverlight'taki yansıma kısıtlamaları
- 24. nasıl onun TRttiType bir sınıf örneğini mı?
- 25. Değer türleri için ASP.NET MVC 2 düzenleyici şablonu, int
- 26. Android: Ben resimde görüldüğü gibi yarım sayfa kıvrımı animasyon efekti oluşturmak istediğiniz iphone
- 27. Yansıma parametresi yerine Object [] nesnesini geçirerek bir sınıfın yeni örneğini oluşturma
- 28. Tamsayı, dizgi, vb. Gibi temel türleri nasıl geçersiz kılabilirim?
- 29. Bir Android parçası örneğini farklı parçalarda nasıl yeniden kullanabilirim?
- 30. ImageMagick Yansıma
System.String, başvuru türü değil, bir değer türüdür. –