Well, there is a "back-door" way to do this, using the new 'dynamic' keyword in .NET 4: but whether you
should do this, or not, you need to carefully evaluate.
Consider:
List<int> newList = new List<int> {1, 2, 3};
var result = newList.Select(itm => itm).ToList();
UseListMadeUsingVar(result);
And the function 'UseListMadeUsingVar is:
private void UseListMadeByVar(dynamic aList)
{
Type type = aList.GetType();
bool isListInt = aList is List<int>;
}
By declaring the input parameter as 'dynamic' you essentially avoid compile-time type checking.
Suggest you run the above code, put a break-point after the boolean variable 'isListInt is set, and examine the values of both 'type and 'isListInt to verify that you are getting a List<int> passed in.
And then, you need to think about what you might need to do with a late-bound result passed in this way: do you need to type-check before using ?