2015-09-10 3 views
0

У меня есть эти два метода-подписи:Общие методы с дубликата подписи

protected object HandleRequest<TResponse, TRequest>(Func<TRequest, TResponse> func, TRequest request) 
    where TResponse : BaseResponse 
    where TRequest : BaseRequest 

и

protected object HandleRequest<TResponse, TController>(Func<TController, TResponse> func, TController controller) 
    where TResponse : BaseResponse 
    where TController : MasterController 

Я получаю следующее накопление ошибки: '...' already defines a member called 'HandleRequest' with the same parameter types.

Почему я получаю эту ошибку и как ее можно решить?

+1

К сожалению, ограничения типа не являются частью подписи метода. См. Блог Эрика Липперта http://blogs.msdn.com/b/ericlippert/archive/2009/12/10/constraints-are-not-part-of-the-signature.aspx Это означает, что единственный способ его решения чтобы эти два метода отличались друг от друга в дополнение к ограничениям типа. – dman2306

ответ

0

Вы не можете перегружать методы только с помощью различных ограничений. C# не очень оптимистично относится к решению двусмысленности, то есть. C++. Вам нужно указать другое имя или изменить подпись.

Смежные вопросы