There's a very interesting quote in the C# specifications regarding anonymous types:
"Within the same program, two anonymous object initializers that specify a sequence of properties of the same names and types in the same order will produce instances of the same anonymous type"
This means this:
var x = new { Name = "Jon Doe", Position = "Manager" };
and this:
var y = new { Name = "Chuck Norris", Position = "The One" };
will produce instances of the same type, hence x.GetType() and y.GetType() will yield the same result.
Now how to cast? For example, if you have a method like the following:
object Test() {
return new { Name = "XYZ", Position = "ABC" };
}
One way to cast the return of this method is as follows:
var ret = Test();
var retCasted = Cast(ret, new { Name = "", Position=""});
Console.WriteLine("Name: {0} -- Position: {1}"retCasted.Name, retCasted.Id);
Here's my Cast method:
T Cast<T>(object o, T type)
{
return (T)o;
}
OK, just that quick tip!
No comments:
Post a Comment