我遇到这种情况:
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
}
我该如何实现?我不知道。
答案 0 :(得分:3)
您需要实现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(); }
}