Autofac 2.4.5.724 изменение API для ReflectionExtensions IsClosingTypeOf

#autofac

#autofac

Вопрос:

IsClosingTypeOf все еще существует? Какой эквивалентный метод в TypeExtensions?

Думаю, мне придется стиснуть зубы и установить hg и загрузить код. Я пытался избежать этого в течение некоторого времени… Я просто сейчас очень занят из-за сроков 😉

Обновление Это код из ветки 2.3

 public static bool IsClosingTypeOf(this Type type, Type openGenericType)
{
    Enforce.ArgumentNotNull(type, "type");
    Enforce.ArgumentNotNull(openGenericType, "openGenericType");
    return type.IsGenericType amp;amp; type.GetGenericTypeDefinition() == openGenericType;
}
  

Это не то же самое, что IsClosedTypeOf я пытался заменить IsClosedTypeOf на IsClosingTypeOf, но безуспешно, мои тесты сломались.

Комментарии:

1. Не могли бы вы, пожалуйста, привести примеры параметров, которые вы используете? Спасибо!

2. Также, пожалуйста, укажите конкретную версию Autofac, которую вы используете — мы исправили некоторые ошибки в этой функции пару версий назад.

Ответ №1:

Вы ищете IsClosedTypeOf в type Autofac.TypeExtensions ? Оно определено в магистрали как

     /// <summary>Determines whether the candidate type supports any base or 
    /// interface that closes the provided generic type.</summary>
    /// <param name="this"></param>
    /// <param name="openGeneric"></param>
    /// <returns></returns>
    public static bool IsClosedTypeOf(this Type @this, Type openGeneric)
    {
        if (@this == null) throw new ArgumentNullException("this");
        if (openGeneric == null) throw new ArgumentNullException("openGeneric");

        if (!(openGeneric.IsGenericTypeDefinition || openGeneric.ContainsGenericParameters))
            throw new ArgumentException(string.Format(TypeExtensionsResources.NotOpenGenericType, openGeneric.FullName));

        return @this.GetTypesThatClose(openGeneric).Any();
    }
  

Комментарии:

1. Спасибо, Джим, я пробовал это, но мои тесты завершились неудачей. Похоже, что с 2.3 по 2.4 произошли некоторые изменения