我现在和C#一起工作了三天,请原谅我的noobish问题。
我正在尝试构建一个自己的数据库类,其中包含一个sendig select-statements的方法。
当对象之前没有调用connect()
时,如何阻止调用此方法?我想到了一个简单的布尔变量,但在我看来,这是一个非常难看的解决方案。
答案 0 :(得分:5)
从“能够运行查询的实时连接”中分离出“能够连接的东西”的想法。
制作Connect
方法(顺便提一下,
这样每个类都负责一项工作,并且在连接之前避免尝试查询的概念,甚至在代码中表示。
答案 1 :(得分:0)
你可以有一个State字段来存储状态并使用它。在这个简单的例子中,我有一个布尔已连接(真/假),但你可能有enum
连接,断开连接,故障等。
private bool _Connected = false;
public bool Connect()
{
// ...
if (success)
{
_Connected = true;
}
}
public bool Disconnect()
{
// ...
_Connected = false;
}
public IEnumberable<Data> GetData()
{
if (!_Connected)
{
// Handle not connected here...
}
}
答案 2 :(得分:0)
不需要布尔值。
只需执行以下操作:
if (con == NULL || !con.isOpen())
{
// throw an exception or return
}
简单而且总是阻止你在出现问题时访问con对象。