我有一个Dictionary(TKey, TValue) like
Dictionary<int, ArrayList> Deduction_Employees =
new Dictionary<int, ArrayList>();
然后我向该数组列表添加一个像这样的匿名类型
var day_and_type = new {
TheDay = myDay,
EntranceOrExit = isEntranceDelay
};
Deduction_Employees[Employee_ID].Add(day_and_type);
现在我如何取消该变量并访问这些属性?
首先,您没有拆箱该类型。匿名类型是引用类型,而不是结构。
即使从技术上讲,您可以在声明它们的方法之外创建相同类型的实例(根据 C# 3.0 语言规范的第 7.5.10.6 节,其中规定:
在同一个程序中,两个匿名
对象初始值设定项指定
相同属性的序列
中的名称和编译时类型
相同的顺序将产生以下实例
相同的匿名类型。
)你没有办法得到name类型的类型,您需要它来执行强制转换Object
返回到您创建的类型。你必须求助于实例解决方案这是本质上有缺陷的。
按示例进行转换是有缺陷的,因为从设计的角度来看,您想要访问声明的函数外部的类型(并且仍在同一模块内)的每个地方,您都必须有效地重新声明该类型。
这是重复的工作,导致草率的设计和实施。
如果您使用 .NET 4.0,那么您could将对象实例放入动态变量中。然而,主要缺点是缺乏成员访问的编译时验证。您很容易拼错成员的名称,然后出现运行时错误而不是编译时错误。
最终,如果您发现需要在声明它的方法之外使用匿名类型,那么唯一好的解决方案是创建一个具体类型并用匿名类型替换具体类型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)