【发布时间】:2011-02-04 16:24:35
【问题描述】:
我在 .NET 中发现了一些与我预期的有点不同的东西。我粘贴的代码没有意义,但它是我拥有的更复杂函数的精简版本。我基本上将匿名类型信息作为参数获取(尚未创建匿名类型的实例),我需要创建该类型的列表,填充它,然后返回列表。现在,我找到了解决方案,但我想知道为什么方法 B 有效,而方法 A 无效。
方法一:
static void Main(string[] args)
{
var newItem = new { ID = Guid.NewGuid(), Name = "Test" };
dynamic list;
list = Activator.CreateInstance(typeof(List<>).MakeGenericType(newItem.GetType()));
list.Add(newItem);
list.Add(Activator.CreateInstance(newItem.GetType(), new object[] { Guid.NewGuid(), "Test 2" }));
}
方法B:
static void Main(string[] args)
{
var newItem = new { ID = Guid.NewGuid(), Name = "Test" };
System.Collections.IList list;
list = (System.Collections.IList)Activator.CreateInstance(typeof(List<>).MakeGenericType(newItem.GetType()));
list.Add(newItem);
list.Add(Activator.CreateInstance(newItem.GetType(), new object[] { Guid.NewGuid(), "Test 2" }));
}
同样,我不是在寻找解决方案,只是好奇为什么方法 B 有效,但方法 A 无效。
谢谢!
【问题讨论】:
-
为什么要在那种情况下使用动态?您正在创建一个通用列表。您也没有说您收到的错误或警报可能是相关的。
标签: dynamic c#-4.0 anonymous-types