如何为 Process 类编写更多属性和方法
本文关键字:属性 方法 Process | 更新日期: 2023-09-27 18:30:34
我想为Process类添加一些属性和方法。
我创建了一个名为 MProcess
的继承类,如下所示:
System.Diagnostics.Process prc = System.Diagnostics.Process.GetProcessesByName("ThankForRead.exe")[0];
MProcess process = new MProcess(prc);
如果我有任何要访问或通信的内容,请编写以下代码:
public void Kill(){
this.prc.Kill();
}
但我不喜欢这种方式。我想扩展进程类,或者部分然后为该类添加属性、方法,它会更漂亮。扩展很容易,只是
public class MProcess : System.Diagnostics.Process
{
//...blah blah
public void GoAway()
{
Console.WriteLine("Bye");
this.Kill(); // original method of process class
}
//...blah blah
}
但是,如何获得MProcess
?Process 类的静态方法如 GetCurrentProcess()
、GetProcessesByName(string ProcessName)
,只返回一个或多个进程对象,我尝试强制转换但不能。
如果我的描述不清楚,请告诉我,我会尝试另一种方式让你理解我说的话,对不起我的英语不好。
如果你的问题是"我如何从特定类型自动强制转换?",那么你需要在MProcess
类上定义显式运算符。
public class MProcess
{
public static explicit operator MProcess(Process proc)
{
return new MProcess(proc);
}
}
我建议您尝试将其定义为扩展方法。
public static class MyProcessExtensionMethods
{
public static void GoAway(this Process proc)
{
Console.WriteLine("Bye");
this.Kill(); // original method of process class
}
}
然后,您可以将此方法用作:
Process prc = Process.GetProcessesByName("ThankForRead.exe")[0];
prc.GoAway();
好吧,对于大部分问题,我不明白你的意思,我认为你必须找一个懂英语的人来翻译你想要的东西。
无论如何,正如我在评论中所写,您可以像以前一样使用 inherit class 或类扩展,我将在此处添加一个链接。我会编辑我的问题,使其更适合你的具体问题,如果你告诉我这就是你的意思
至于问题的最后一部分:
但是,如何获得MProcess?进程类的静态方法,如 作为 GetCurrentProcess(), GetProcessesByName(字符串 ProcessName), 仅 返回一个或多个进程对象,我尝试强制转换,但不能。
静态方法GetCurrentProcess()
将返回一个Process
类。 你不能仅仅因为你创建了一个继承类就强制转换类,你不能再拿一棵树说它是一棵苹果树,仅仅因为苹果树是树的一种形式。
做一件事。不要重写进程类。 在 MProcess 类中添加进程属性并对其执行操作。喜欢这个:
public class MProcess
{
//...blah blah
//...
private System.Diagnostics.Process myProcess;
public System.Diagnostics.Process MyProcess
{
get {return myProcess;}
set {myProcess = value;}
}
//...blah blah
}