Let me try to explain what I mean. For example I have the following code:
public static class MyClass
{
public static void DoSmthWithCollection<T>(IEnumerable<T> collection)
{
...
}
}
Of course, compiler would allow to pass to it an object of List<int>
type. Moreover, the compiler will figure out that the type T
for the method is resolved to int
type based on the argument type.
I need to do the same only dynamically, either by using System.Reflection or Roslyn. Say I get the MethodInfo
for the method, I get the generic ParameterInfo
. Is there any easy way to figure out that an object of type typeof(List<int>)
actually fits to be an argument to the method and that when you pass it, the method resolves T
to int
type? And I am talking about some relatively easy solution without examining types and subtypes and the generic type constraints. I think at least Roslyn should have one, since this is what the C# compiler is doing.
Thanks for your help.
Aucun commentaire:
Enregistrer un commentaire