旁注:我真的想不出一个好的标题。
好的,我正在更新一个由不相信代码重用的开发人员编写的程序。所以我的任务是更新并使其对未来的变化“友好”。
编辑我应该说:最终用户想要一个命令提示符来查看每个 ping。我知道使用内置 ping 会是一个更好的选择,但这正是他们想要的……你们知道那是怎么回事 /End Edit
我正在使用一个在整个程序中实现了几次的类。(以前有两个类基本上做同样的事情)
我决定制作一个接口并在类上实现它。
(我还没有失去你吗)
该方法实际上只是将主机名(方法参数之一)转换为 IP 地址,并生成一个命令提示符来 ping 它。我还有一个单独的类,它实现了接口并调用了方法,但是没有传递一个字符串(主机名),它传递了一个 ipaddress 对象。
我的问题在这里:处理可以更改类型的参数时的最佳做法是什么?有人会看看我做了什么吗?它符合要求,我只是想确保它是最佳实践。
// Interface that is implement twice in the program
interface Icmd_Ping
{
void initilize_Proc(object target, string last_Octet);
}
class process_spawn : Icmd_Ping
{
writeLog_Delegate writeLog = new writeLog_Delegate(error_Log.write_log);
private string ipaddress;
public object Ipaddress
{
get { return ipaddress; }
set
{
IPAddress ip = value as IPAddress;
if (ip != null)
ipaddress = ip.ToString();
else
{
try
{
formatIP format = new formatIP();
ipaddress = format.convert_Ip(((string)value));
}
catch (Exception ex)
{
writeLog(ex);
}
}
}
}
public void initilize_Proc(object target, string last_Octet = null)
{
if (target == null)
throw new ArgumentNullException();
formatIP format_IP = new formatIP();
this.Ipaddress = target;
Process cmd = new Process();
ProcessStartInfo psi = new ProcessStartInfo {FileName = "cmd", UseShellExecute = false, RedirectStandardOutput = false };
cmd.StartInfo = psi;
if (last_Octet != string.Empty)
psi.Arguments = string.Format("/c ping {0} -t", format_IP.format_Ip(((string)Ipaddress), last_Octet));
if (last_Octet == string.Empty)
psi.Arguments = string.Format("/c ping {0} -t", ((string)Ipaddress));
cmd.Start();
}
}
我应该在 ipaddress 属性中转换 IPaddress 吗?或者只是制作一个新方法并调用它?
抱歉,我知道它在这一点上不是很优雅,我只是想在我真正深入研究之前确保我处于写作方向。
感谢大家的帮助。