这是我的问题的例子:
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吗?
答案 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>
。