定義我有以下兩個接口:接口不包含方法
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' does not contain a definition for 'SetAuthCookie'
什麼我與登錄方法,我不是用SetAuthCookie方法做着做着不同?
明確鑄造類型IMembershipProvier
作品就好了:
((IMembershipProvider)_facebookMembershipProvider).SetAuthCookie(user.id, false);
我可能只是錯過了一些簡陋。謝謝參觀。
UPDATE
響應於標記的問題,第一個參數被傳遞給SetAuthCookie
方法來自於一個dynamic
對象。
dynamic user = _authorizeUserCommand.Invoke(_authorizeUserParams);
+1這很難相信。沒有舊的DLL敲打你的機器?它可以是Resharper /類似的舊緩存嗎? – Aliostad 2012-03-23 09:52:30
您是否在使用類似'dynamic',或任何裝飾平臺或類似的東西?任何元編程或IoC/DI堆棧?基本上,它看起來像一些代碼(通常是元編程,通過ILGenerator)試圖錯誤地調用該方法。它不*聽起來*就像C#編譯器會出錯的東西。 – 2012-03-23 09:55:40
我在本地和我的外部服務器上遇到同樣的問題。我已經刪除並重新添加了對我的UserManagement DLL的引用。看起來它可能是緩存問題。 – 2012-03-23 09:55:40