Получить дескриптор типа для универсального параметра класса - PullRequest
0 голосов
/ 17 октября 2019

У меня есть следующий класс:

namespace MyClassLibrary
{
   public class CalculatorGeneric<T>  where T : IMyInterface
   {

      public int Value1 { get; set; }
      public int Value2 { get; set; }
      public CalculatorGeneric()
      {
         Value1 = 100;
         Value2 = 200;
      }

      public int Add(int val1, int val2)
      {
         Value1 = val1; Value2 = val2;
         return val1 + Value2;
      }

      public int Multiply(int val1, int val2)
      {

         Value1 = val1; Value2 = val2;

         return Value1 * Value2;
      }

   }
}

Где-то еще в моем коде я задаю все методы в моем решении с помощью следующего метода:

  public static void PreJitAllMethods(Type type)
  {
     // get the type of all the methods within this instance
     var methods = type.GetMethods(BindingFlags.DeclaredOnly |
                                 BindingFlags.NonPublic |
                                 BindingFlags.Public |
                                 BindingFlags.Instance |
                                 BindingFlags.Static);
     if (type.IsGenericType)
     {
       // return;
     }

     // Jit all methods
     foreach (var method in methods)
     {
        // jitting of the method happends here.
        try
        {
           if (type.IsGenericType)
              RuntimeHelpers.PrepareMethod(method.MethodHandle, new[] { typeof(object).TypeHandle });
           else
              RuntimeHelpers.PrepareMethod(method.MethodHandle);
        }
        catch  (Exception ex)
        {

        }
     }
  }

Без where T : IMyInterface Iмогу просто передать параметр new[] { typeof(object).TypeHandle } Но моя проблема в том, что мне также нужно вызвать метод RuntimeHelpers.PrepareMethod для методов класса, где универсальный параметр содержит, например, where T: IMyInterface. Как я могу это сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...