接口引用找不到预期的类

时间:2014-10-02 11:48:30

标签: c# interface

我对编程很新,我在尝试理解和使用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
}

0 个答案:

没有答案