Freigeben über


IL2060: Aufruf von „System.Reflection.MethodInfo.MakeGenericMethod“ kann vom Trimmer nicht statisch analysiert werden

Ursache

Ein Aufruf von MethodInfo.MakeGenericMethod(Type[]) kann vom Trimmer nicht statisch analysiert werden.

Regelbeschreibung

Entweder kann die Methode, für die MakeGenericMethod(Type[]) aufgerufen wird, nicht statisch bestimmt werden, oder die Typparameter, die für generische Argumente verwendet werden sollen, können nicht statisch bestimmt werden. Wenn die offene generische Methode DynamicallyAccessedMembersAttribute-Anmerkungen zu einem seiner generischen Parameter aufweist, kann der Trimmer derzeit nicht überprüfen, ob die Anforderungen von der aufrufenden Methode erfüllt werden.

Beispiel

class Test
{
  public static void TestGenericMethod<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties)] T>()
  {
  }

  void TestMethod(Type unknownType)
  {
    // IL2060 Trim analysis: Call to 'System.Reflection.MethodInfo.MakeGenericMethod' can not be statically analyzed. It's not possible to guarantee the availability of requirements of the generic method
    typeof(Test).GetMethod("TestGenericMethod").MakeGenericMethod(new Type[] { typeof(TestType) });

    // IL2060 Trim analysis: Call to 'System.Reflection.MethodInfo.MakeGenericMethod' can not be statically analyzed. It's not possible to guarantee the availability of requirements of the generic method
    unknownMethod.MakeGenericMethod(new Type[] { typeof(TestType) });
  }
}