我发现在.NET中有些东西的工作方式与我预期的有些不同。 我要粘贴的代码可能没有意义,但它是一个更复杂的函数的压缩版本。 我基本上将匿名类型信息作为参数(尚未创建匿名类型的实例),然后需要创建该类型的列表,填充它,然后返回该列表。 现在,我找到了一种解决方法,但我想知道为什么B方法有效而A方法无效。
方法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方法不行。
谢谢!