对于下面显示的代码
using System;
public class Test
{
public static void Main()
{
Test t = new Test();
object AnonymousInside= t.GetAnonymousType();
Console.Write(AnonymousInside.Key);//Error on compilation
}
public object GetAnonymousType()
{
return new {Key="KeyName",Value="ValueName"};
}
}
如何从object
类型中取回匿名类型?
如果那不可能,那么这段代码是如何工作的?
@Html.TextBoxFor(model => model.ConfirmPassword, new { maxlength = 35, type = "password", @class="textArea margindrop",placeholder="Confirm password"})
答案 0 :(得分:3)
你可以让它变得动态
dynamic AnonymousInside= t.GetAnonymousType();
虽然你应该使用一个类,而不是
如果您仍想使用匿名类型
在docs中提及:
编译器为每个匿名类型提供一个名称,尽管你的名字也是 应用程序无法访问它。
因此,通过对象访问它的唯一方法是使用reflection
或dynamic
答案 1 :(得分:2)
如果您不想使用dynamic
,可以尝试使用此类
using System;
public class Test
{
public static void Main()
{
var AnonymousInside = GetAnonymousTyped(GetAnonymousObject(), new {Key="",Value=""});
Console.Write(AnonymousInside.Key);//All Ok
}
public static T GetAnonymousTyped<T>(object o, T _)
{
return (T)o;
}
public static object GetAnonymousObject()
{
return new {Key="KeyName",Value="ValueName"};
}
}