C#中的条件类继承

本文关键字:继承 条件 | 更新日期: 2023-09-27 18:21:07

好吧,我正在为Windows 8.1 Universal开发一个应用程序,手机上有一些PC平台上不存在的API。问题是,如果当前平台是windowsphone,我将尝试有条件地继承一个类。这是我的代码片段(不起作用)

    public class Client : IDisposable, IClient
#if WINDOWS_PHONE_APP
        , IWebAuthenticationContinuable
#endif
    {
#if WINDOWS_PHONE_APP
        void ContinueWebAuthentication(WebAuthenticationBrokerContinuationEventArgs args) { }
#endif
        public void DoStuff()
        {
        }
        public void Dispose()
        {
        }
    }

每当我试图在视图模型中创建此类的新实例时,我都会收到以下错误:无法创建类型为"App87.ViewModels.MainViewModel"的实例[行:9位置:27]

第9行是我的构造函数,它只创建Client类的一个新实例。

C#中的条件类继承

尝试了您的确切代码,只有一件事不起作用:ContinueWebAuthentication应该标记为public,因为它是从接口继承的:

public interface IClient { }
#if WINDOWS_PHONE_APP
public interface IWebAuthenticationContinuable
{
    void ContinueWebAuthentication(WebAuthenticationBrokerContinuationEventArgs args);
}
#endif
public class Client : IDisposable, IClient
#if WINDOWS_PHONE_APP
    , IWebAuthenticationContinuable
#endif
{
#if WINDOWS_PHONE_APP
    public void ContinueWebAuthentication(WebAuthenticationBrokerContinuationEventArgs args) { }
#endif
    public void DoStuff()
    {
    }
    public void Dispose()
    {
    }
}