在另一个类中使用一个对象

时间:2016-11-17 01:38:42

标签: c# model-view-controller

这是我的问题的例子:

    namespace test
    {
         public partial class MainWindow : Window
    {

    private Data theData= new Data();
    private Handler theHandler = new Handler(theData);

    public MainWindow()
    {
        InitializeComponent();
    } 
    ......

    }

    class Handler
    {

        Data theData;
        public Handler(Data theDa)
        {
          theData = theDa;
        }

        //some funktions which are using theData

    }

    class Data
    {
        public Data()
        {

        }
        public string a;
        public string b;
    }

    }

我有一个窗口类,有一个类的实例来做一些思考(Handler)和一个用来存储数据的类(Data)。

我认为我展示的方式有点快速和肮脏。有人能告诉我如何在不使用构造函数的情况下在Handler类中使用Data吗?

1 个答案:

答案 0 :(得分:1)

你有100%正确(除了将所有类放在一个文件中!)

Handler要对Data的实例执行操作,必须给它。除了构造函数之外还有其他方法(为其方法分配属性或参数),但如果Handler的给定实例只应作用于Data的一个实例,那么您的模型就可以了。

唯一的另一个问题是你在Data中有公共字段,这被认为是不好的做法;你应该使用属性(使用PascalCase名称)。

我能想到的唯一其他选择是Handler如果Data不关心MainWindow引用,则Data实例化<div id="parent_popup"> <div id="popup"> message message message message message message message <a class="close"title="close" onclick="document.getElementById('parent_popup').style.display='none';">X</a> </div> </div> #parent_popup{ padding: 20px; background-color: rgba(0, 0, 0, 0.8); display: none; position: fixed; z-index: 99999; top: 0; right: 0; bottom: 0; left: 0; } #popup{ background: #fff; max-width: 520px; margin: 10% auto; padding: 5px 20px 13px 20px; border: 10px solid #ddd; position: relative; -webkit-box-shadow: 0px 0px 20px #000; -moz-box-shadow: 0px 0px 20px #000; box-shadow: 0px 0px 20px #000; -webkit-border-radius: 15px; -moz-border-radius: 15px; border-radius: 15px; } .close{ background-color: rgba(0, 0, 0, 0.8); border: 2px solid #ccc; height: 24px; line-height: 24px; position: absolute; right: -24px; cursor: pointer; font-weight: bold; text-align: center; text-decoration: none; color: rgba(255, 255, 255, 0.9); font-size: 14px; text-shadow: 0 -1px rgba(0, 0, 0, 0.9); top: -24px; width: 24px; -webkit-border-radius: 15px; -moz-border-radius: 15px; -ms-border-radius: 15px; -o-border-radius: 15px; border-radius: 15px; -moz-box-shadow: 1px 1px 3px #000; -webkit-box-shadow: 1px 1px 3px #000; box-shadow: 1px 1px 3px #000; } .close:hover{ background-color: rgba(0, 122, 200, 0.8); } <script type="text/javascript"> var delay_popup = 5000;setTimeout("document.getElementById('parent_popup').style.display='block'", delay_popup); </script>