補足: これにぴったりのタイトルが思いつきませんでした。
わかりました、コードの再利用を信じていない開発者によってまとめられたプログラムの更新に取り組んでいます。SO私は、将来の変更のために更新して「フレンドリー」にする仕事を任されています。
編集私は言ったはずです:エンドユーザーは、コマンドプロンプトで各pingを確認したいと考えています。組み込みのpingを使用する方が良いオプションであることは知っていますが、それが彼らが望んでいることです... /End Edit
私は、プログラム全体で数回実装されているクラスを使用しています。(以前は、基本的に同じことを行う 2 つのクラスがありました)
インターフェイスを作成してクラスに実装することにしました。
(私はもうあなたを失ったの?)
このメソッドは実際には、ホスト名 (メソッド パラメーターの 1 つ) を ipaddress に変換し、コマンド プロンプトを生成して ping を実行するだけです。また、インターフェイスを実装してメソッドを呼び出す SEPARATE クラスもありますが、文字列 (ホスト名) を渡すのではなく、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 プロパティの IP アドレスを変換する必要がありますか? それとも、新しいメソッドを作成してそれを呼び出すだけですか?
申し訳ありませんが、この時点ではあまりエレガントではないことはわかっています。実際にこれに飛び込む前に、書き込み方向にいることを確認したいだけです。
助けてくれてありがとう。