У меня есть два следующих интерфейса:
public interface IMembershipProvider
{
object Login(ILoginProviderParameters loginParameters);
void SetAuthCookie(string userName, bool createPersistentCookie);
}
public interface IFacebookMembershipProvider : IMembershipProvider{}
и имплиментация:
public class FacebookMembershipProvider: IFacebookMembershipProvider
{
public object Login(ILoginProviderParameters loginParameters)
{
// Facebook login code is here
}
public void SetAuthCookie(string userName, bool createPersistentCookie)
{
FormsAuthentication.SetAuthCookie(userName, createPersistentCookie);
}
}
Это вводится в мой контроллер и назначается:
private readonly IFacebookMembershipProvider _facebookMembershipProvider;
Я могу вызвать метод Login
без каких-либо проблем, однако, когда я вызываю метод SetAuthCookie
:
_facebookMembershipProvider.SetAuthCookie(user.id, false);
Я получаю сообщение об ошибке:
MyNamespace.UserManagement.Interfaces.IFacebookMembershipProvider 'не содержит определения для SetAuthCookie
Что я делаю по-другому в методе Login, а в методе SetAuthCookie нет?* Явное приведение к типу IMembershipProvier
прекрасно работает:
((IMembershipProvider)_facebookMembershipProvider).SetAuthCookie(user.id, false);
Я, наверное, только что пропустил что-то элементарное.Спасибо, что заглянули.
ОБНОВЛЕНИЕ
В ответ на вопрос Marks первый параметр, передаваемый методу SetAuthCookie
, происходит от объекта dynamic
.
dynamic user = _authorizeUserCommand.Invoke(_authorizeUserParams);