English 中文(简体)
我应该如何实现接口组合?
原标题:How should I implement interface composition?

我有这样的情况:

public interface IHasValue<T>
    {
        T Value { get; set; }
    }

public interface IClickable
    {
        void SubscribeOnClick(EventHandler click);
    }

public interface ILoginView : IView
    {
        IHasValue<string> Username { get; }
        IHasValue<string> Password { get; }
        IClickable Login { get; }
        IClickable Cancel { get; }
    }

public partial class LoginVIew : Form, ILoginView
    {
        public LoginVIew()
        {
            InitializeComponent();
        }

        #region ILoginView Members

        public IHasValue<string> Username
        {
            get { ?? }
        }

        public IHasValue<string> Password
        {
            get { ?? }
        }

        public IClickable Login
        {
            get { ?? }
        }

        public IClickable Cancel
        {
            get { ?? }
        }

        #endregion
    }

我应该如何实现这一点?我不知道。

最佳回答

那么,您需要实现IHasValue<;T>IClickable,以便能够创建ILoginView的实现(因为您需要能够在ILoginView成员中创建实现这些接口的对象实例。

 public class StringValue : IHasValue<string>
 {
     public string Value { get; set; }
 }

 public interface LoginClickable : IClickable
 {
     public void SubscribeOnClick(EventHandler click)
     {
          // do something to login
     }
 } 

 public interface CancelClickable : IClickable
 {
     public void SubscribeOnClick(EventHandler click)
     {
          // do something to cancel
     }
 } 

。。。

    public IHasValue<string> Username
    {
        get { return new StringValue { Value = "Username" }; }
    }

    public IHasValue<string> Password
    {
         get { return new StringValue { Value = "Password" }; }
    }

    public IClickable Login
    {
        get { return new LoginClickable(); }
    }

    public IClickable Cancel
    {
        get { return new CancelClickable(); }
    }
问题回答

暂无回答




相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

NSArray s, Primitive types and Boxing Oh My!

I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

How to Use Ghostscript DLL to convert PDF to PDF/A

How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...

Linqy no matchy

Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...

热门标签