【问题标题】:Windows / Web Form to other classes, forms, and etcWindows / Web 窗体到其他类、窗体等
【发布时间】:2012-11-07 21:56:58
【问题描述】:

所以这个特定的话题已经被打死了;但显然我的迭代要么不是选择的方法,要么不实用。

目标是创建一个 Windows 窗体和一个 Web 窗体。这两种形式;在单独的类中设置属性。然后其他类引用容器;这样,随着界面的变化,功能也会发生变化,而无需大量重新编码。

Windows 窗体 ---> 容器 被这些引用:1 类、2 类、3 类

我是这样处理的: 表格:

private Some.Reference.ToClass.Container _container;
public void Method(Some.Reference.ToClass.Container Container)
{
          _container = Container;
}

private void button_click(object sender, EventArgs e)
{
          _container.Name = textbox.Text (or some other component)
}

类:“容器”

public Name { get; set; }

要引用的类或表单:

Class WhateverName
{
       private string REFERENCE;

       private Some.Reference.ToClass.Container _container;
       public void Method(Some.Reference.ToClass.Container Container)
       {
                _container = Container;
       }

       public void NewMethod()
       {
              REFERENCE = _container.Name;
       }
}

它一直没有设置;它声明它是一个空对象。我错过了什么?任何帮助,将不胜感激。甚至是一个很好的教程供我比较学习;或者找到它不起作用的原因也可以。

【问题讨论】:

  • 当你说“它一直没有设置”.. 什么没有具体设置?这是经典的 MVP 风格的东西..
  • 它说“System.NullReferenceException {“对象引用未设置为对象的实例。”}这很奇怪;因为我正在引用它。至少我认为我基于该代码以上。
  • 我没有看到任何构造函数调用。您的调用代码是否确保在 button_Click() 和 NewMethod() 运行之前通过“方法”设置容器?
  • 在两个按钮上;表单和类之一。
  • @greg:请注意,除非调用 Method(),否则 _container 为 null,传入容器实例。如果在 _container 仍然为空时调用 button_Click(),您将得到您描述的异常。至少将调用包装在 'if(_container != null)'

标签: c# forms class containers


【解决方案1】:

根据提供的详细信息;包括空值的问题。我设置了一个构造函数以根据更改自动初始化。然后只是添加了一些空引用检查。

此解决方案的示例:

public class One
{

    // declared:
    private.some.Reference.ToSomeClass _container;

    One(ToSomeClass container)
    {
          _container = container;
    }

    private void button_click(object sender, EventArgs e)
    {
          if(_container != null)
          {
               _container.Name = textbox.Text (or some other component)
          }
    }
}

然后在另一个班级;它引用了该属性;设置它。因此,为了避免它失败导致尚未分配值或尚未创建实例,只需添加空引用验证。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多