Does your Method2
really care what type it gets? If not, you could just call Cast<object>()
:
void Method (IEnumerable source)
{
Method2(source.Cast<object>());
}
If you definitely need to get the right type, you'll need to use reflection.
Something like:
MethodInfo method = typeof(MyType).GetMethod("Method2");
MethodInfo generic = method.MakeGenericMethod(type);
generic.Invoke(this, new object[] {source});
It's not ideal though... in particular, if source isn't exactly an IEnumerable<type>
then the invocation will fail. For instance, if the first element happens to be a string, but source is a List<object>
, you'll have problems.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…