C# ‘anonim türleri başka bir derlemede bildirilen’ erişemiyor özellikleri dinamik
Kod feryat iyi ClassSameAssembly aynı mecliste sınıfı Programı olarak Dersim var olduğu sürece çalışıyor. Ama sınıf ClassSameAssembly montaj ayırmak için hareket edince çalışma zamanı hata var. Bunu çözmek için para mı?
using System;
namespace ConsoleApplication2
{
public static class ClassSameAssembly
{
public static dynamic GetValues()
{
return new
{
Name = "Michael", Age = 20
};
}
}
internal class Program
{
private static void Main(string[] args)
{
var d = ClassSameAssembly.GetValues();
Console.WriteLine("{0} is {1} years old", d.Name, d.Age);
}
}
}
CEVAP
Sorun anonim tür olarak oluşturulan inanıyorum cildin gerçekten yok yani internal
, "" Bu konuda gibi.
Yerine ExpandoObject kullanmayı deneyin:
public static dynamic GetValues()
{
dynamic expando = new ExpandoObject();
expando.Name = "Michael";
expando.Age = 20;
return expando;
}
Biliyorum bu biraz çirkin, ama iyi aklıma şu anda... bilmiyorum aklınıza bile bir nesne başlatıcı ile, çünkü sırasında kesinlikle yazılmış olarak ExpandoObject
derleyici olmayacak bu ne demek oluyor "Adı" ve "Çağ". Sanaolabilirbunu yapabilmek için:
dynamic expando = new ExpandoObject()
{
{ "Name", "Michael" },
{ "Age", 20 }
};
return expando;
ama bu çok da iyi değil...
Olabilirpotansiyel olarakuzantısı yöntemi yansıma yoluyla aynı içeriği ile bir expando için anonim bir tür dönüştürmek için yazıyorum. Sonra yazabilirsiniz:
return new { Name = "Michael", Age = 20 }.ToExpando();
Çok berbat oldu :(
IIS yöneticisi SSL sertifika uygulama ...
Dinamik bir ExpandoObject özellikleri ...
SERİ Farklı Anonim Türleri ile Seçin...
VisualStudio2010 hata Ayıklama - başka...
Örnek özellikleri PHP dinamik olarak o...