我想为Process类添加一些属性和方法。
我已经创建了一个名为MProcess
的继承类,如下所示:
System.Diagnostics.Process prc = System.Diagnostics.Process.GetProcessesByName("ThankForRead.exe")[0];
MProcess process = new MProcess(prc);
如果我有任何要访问或通信的内容,请编写以下代码:
public void Kill(){
this.prc.Kill();
}
但我不喜欢这样。我想扩展Process类,或者部分然后添加属性,该类的方法会更漂亮。 扩展很简单,只需
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)
,只返回一个或多个进程对象,我试图进行转换,但它不能。
如果我的描述不清楚,请告诉我,我会尝试另一种方式让你理解我说的话,抱歉我的英语不好。
答案 0 :(得分:1)
如果您的问题是“我如何自动从特定类型转换?”,那么您需要在MProcess
类上定义运算符explicit。
public class MProcess
{
public static explicit operator MProcess(Process proc)
{
return new MProcess(proc);
}
}
我建议您尝试将其定义为Extension Method。
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();
答案 1 :(得分:0)
无论如何,正如我在评论中写的那样,你可以像你一样使用继承类,或类扩展,我会添加link here。如果您告诉我“您的意思”,我会根据您的具体问题编辑我的问题
至于问题的最后部分:
但是,如何获得MProcess? Process类的静态方法 仅作为GetCurrentProcess(),GetProcessesByName(字符串ProcessName) 返回一个或多个过程对象,我试图投射,但它不能。
静态方法GetCurrentProcess()
将返回Process
类。你不能仅仅因为你创建了一个继承类来构建类,不能再用一棵树来说它只是因为苹果树是树的一种形式而是苹果树
答案 2 :(得分:0)
做一件事。不要覆盖Process类。在您的MProcess Class&中添加Process属性对它进行操作。像这样:
public class MProcess
{
//...blah blah
//...
private System.Diagnostics.Process myProcess;
public System.Diagnostics.Process MyProcess
{
get {return myProcess;}
set {myProcess = value;}
}
//...blah blah
}