代码之家  ›  专栏  ›  技术社区  ›  Ali Ha Quang

如何在C语言中实现继承接口#

c#
  •  1
  • Ali Ha Quang  · 技术社区  · 2 年前

    Inherited interface

    我有一个这样的界面

     public interface INotificationEngine
        {
            bool UsingDbMail();
    
            bool UsingSMTP();
    
            bool UsingSMS();
        }
    

     public class NotificationEngine
        {
            public class Send : INotificationEngine
            {
                public bool UsingDbMail(string para)
                {
                    throw new NotImplementedException();
                }
    
                public bool UsingSMTP()
                {
                    throw new NotImplementedException();
                }
    
                public bool UsingSMS()
                {
                    throw new NotImplementedException();
                }
            }
        }
    

    这让我可以做如下的事情

    NotificationEngine.Send sendRequest = new NotificationEngine.Send();
    sendRequest.UsingDbMail("hello");
    

    我想要实现的是以下几点

    NotificationEngine engine = new NotificationEngine();
    engine.UsingDbMail("hello").Send;
    

    你知道我如何通过接口或其他方式做到这一点吗?

    1 回复  |  直到 2 年前
        1
  •  1
  •   Mathieu Guindon    2 年前

    从您的公共界面开始,它可能需要如下所示:

    interface IMailerService
    {
        bool Send ():
    }
    

    public IMailerService UsingDbMail(...)
    {
        return new DbMailerService(...);
    }
    
    public IMailerService UsingSmtp(...)
    {
        return new SmtpMailerService(...);
    }
    
    public IMailerService UsingSms(...)
    {
        return new SmsMailerService(...)
    }
    

    现在,当调用UsingXyz方法时,会得到一个对象,该对象公开 Send 它根据需要实现的方法:

    engine.UsingSms(...).Send(); // sends a SMS message