0

对于如下所示的代码

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"};
    }
}

如何从 type 中取回匿名类型object

如果这是不可能的,那么这段代码是如何工作的?

@Html.TextBoxFor(model => model.ConfirmPassword, new { maxlength = 35, type = "password", @class="textArea  margindrop",placeholder="Confirm password"})

文档

4

2 回答 2

3

你可以让它动态

dynamic AnonymousInside= t.GetAnonymousType();

虽然你应该使用一个类,结构来代替


如果你还想使用匿名类型

它在文档中提到:

编译器为每个匿名类型提供了一个名称,尽管您的应用程序无法访问它。

因此,通过对象访问它的唯一方法是使用reflectiondynamic

于 2013-11-07T05:55:37.290 回答
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"};
    }
}
于 2013-11-07T06:11:21.157 回答