我对编程很新,我在尝试理解和使用C#中的接口时遇到了问题。
我有一个名为MainWindow的GUI类。该类实现了一个名为IClientView的接口。另一个类ClientController使用此接口更新MainWindow中的字段。
但是,它没有像我预期的那样工作,因为对我的接口的引用在ClientController中总是为null,我不明白为什么。
以下是代码的一部分,感谢任何帮助。
class ClientController : IClientController
{
public IClientView ViewForm { get; set; }
}
public interface IClientView
{
/// <summary>
/// Updates the status window.
/// </summary>
/// <param name="status">Updates the status view.</param>
void StatusWindow(string status);
}
public partial class MainWindow : Window, ILoginFormView, IClientView
{
#region IClientView implementation
public void StatusWindow(string status)
{
clientInfoTextBlock.Text += status +"\n";
}
#endregion
}
编辑:
我应该补充一点,我有另一个接口,它将处理登录,由ClientController类以相同的方式引用,并由MainWindow类实现,并且可以正常工作。我只是无法弄清楚两者之间的区别:
class ClientController: IClientController
{
#region private fields
/// <summary>
/// Reference to login form
/// </summary>
public ILoginFormView LoginForm
{
get;
set;
}
}
public interface ILoginFormView
{
/// <summary>
/// IP address of server to connect to
/// </summary>
string ServerIpAddress
{
get;
}
/// <summary>
/// TCP port number of server to connect to
/// </summary>
int ServerTcpPort
{
get;
}
}
public partial class MainWindow: Window, ILoginFormView, IClientView
{
#region ILoginFormView implementation
/// <summary>
/// IP address of server to connect to.
/// </summary>
public string ServerIpAddress
{
get
{
return (string) Dispatcher.Invoke(new Func<string>( () => serverAddressBox.Text));
}
}
/// <summary>
/// TCP port of the server to connect to.
/// </summary>
public int ServerTcpPort
{
get
{
return (int) Dispatcher.Invoke(new Func<int>( () => Convert.ToInt32(serverPortBox.Text)));
}
}
#endregion
}