匿名类型仅仅是一个性质类型,您的anonymus类型没有属性:
private static Dictionary<int, object> MAPS = new Dictionary<int, object>
{
{1, new { Prop1 = 1, Prop2 = 2, Prop3 = 3}}
};
但你要如何从对象转换到anoymous类型?
编辑:虽然这里有一个很好的问题。我必须投射MAPS [1] [0]还是有办法在那里隐式强制类型?
无法对象转换的匿名类型没有黑客攻击这样的扩展方法:
public static T CastByPrototype<T>(this object obj, T prototype)
{
return (T)obj;
}
它采用了原型匿名类型,如:
var prototype = new { Prop1 = 0, Prop2 = 0, Prop3 = 0 };
现在这个工程:
var value = MAPS[1].CastByPrototype(prototype); // you can use value.Prop1
它失败,并且InvalidCastException
如果原型ype具有不同的属性(以相同的顺序)。
而不是说_“不能像我期望的那样工作_如果你显示实际的编译器错误,这将是有帮助的,它是_”无效的匿名类型成员声明器。匿名类型成员必须声明为成员分配,简单名称或成员访问“_。 – CodeCaster 2014-10-17 11:29:26
@CodeCaster采取点。我认为这是一个基本的东西,我刚刚得到了一个大脑噗噗。但你是正确的,没有争论。 :) – 2014-10-17 11:31:43