C#中匿名类型传递
我们知道匿名类型实际上就是.net自动生成的一个泛型类,并且只要字段名相同类型相同就会使用同一个匿名类型。所以我们只要类用这个特性就可以把一个通过参数传递的匿名类型进行强转了。
public T CastAnonymous<T>(object anonymous, T anonymousType)
{
return (T)anonymous;
}
class User
{
public string Name { get; set; }
}
public static void Main()
{
var u = new User{ Name = "Lucifer" };
var a = new { a = 26; u.Name; b = false };
Print(a);
}
public void Print(object anonymous)
{
var a = CastAnonymous(anonymous, new { a=0, Name = "", b = false });
Console.WriteLine{"{0} - {1} - {2}", a.a, a.Name, a.b};
}