#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 произошли некоторые изменения