Я слежу за ссылкой Unity Interception, чтобы реализовать Unity в моем проекте.Единство Концепция перехвата Ясность
By, перейдя по ссылке, я сделал класс, как показано ниже:
[AttributeUsage(AttributeTargets.Method)]
public class MyInterceptionAttribute : Attribute
{
}
public class MyLoggingCallHandler : ICallHandler
{
IMethodReturn ICallHandler.Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
{
IMethodReturn result = getNext()(input, getNext);
return result;
}
int ICallHandler.Order { get; set; }
}
public class AssemblyQualifiedTypeNameConverter : ConfigurationConverterBase
{
public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
{
if (value != null)
{
Type typeValue = value as Type;
if (typeValue == null)
{
throw new ArgumentException("Cannot convert type", typeof(Type).Name);
}
if (typeValue != null) return (typeValue).AssemblyQualifiedName;
}
return null;
}
public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
{
string stringValue = (string)value;
if (!string.IsNullOrEmpty(stringValue))
{
Type result = Type.GetType(stringValue, false);
if (result == null)
{
throw new ArgumentException("Invalid type", "value");
}
return result;
}
return null;
}
}
До сих пор я сделал ничего особенного, просто следовал примеру, как описано в верхней ссылке. Но, когда мне нужно реализовать класс Unity Interception, я столкнулся с большим путаницей.
Предположим, я должен реализовать на одном из методов в моем классе, как:
[MyInterception]
public Model GetModelByID(Int32 ModelID)
{
return _business.GetModelByID(ModelID);
}
Это главное, где я застрял, я ДНТ знаю, как я должен использовать класс Intercept над метод GetModelByID() и как получить единство.
Пожалуйста, помогите мне, пожалуйста, также объясните концепцию Unity Interception.
Что вы хотите перехватить или какую функциональность вы хотите добавить. В основном ваша реализация 'ICallHandler' ничего не делает. Он вызывает ваш метод GetModelById и возвращает значение. – Jehof
@Jehof Я просто хочу, чтобы, если мой ** _ бизнес ** имеет значение null, тогда не следует делать вызов ** GetModelById() **, как я могу это достичь? –
Выбросить исключение в методе 'GetModelById', если' _business' равно null. Перехват не является правильным инструментом для поддержки этого. – Jehof