C# 如何为Process类编写更多属性和方法

C# 如何为Process类编写更多属性和方法,c#,inheritance,dll,system,extends,C#,Inheritance,Dll,System,Extends,我想为Process类添加一些属性和方法 我创建了一个名为mpprocess的继承类,如下所示: System.Diagnostics.Process prc = System.Diagnostics.Process.GetProcessesByName("ThankForRead.exe")[0]; MProcess process = new MProcess(prc); 如果我有任何要访问或通信的内容,请编写以下代码: public void Kill(){ this.prc.K

我想为Process类添加一些属性和方法

我创建了一个名为
mpprocess
的继承类,如下所示:

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
}
但是,如何获得
MPProcess
?Process类的静态方法,如
GetCurrentProcess()
getProcessByName(string ProcessName)
,只返回一个或多个Process对象,我尝试强制转换,但无法执行

如果我的描述不清楚,请让我知道,我将尝试另一种方式让您理解我说的话,抱歉我的英语不好。

如果您的问题是“如何从特定类型自动强制转换?”,那么您需要在
MPProcess
类中定义运算符

我建议你试着把它定义为

然后,您可以将此方法用作:

Process prc = Process.GetProcessesByName("ThankForRead.exe")[0];
prc.GoAway();

大部分问题我都不明白你的意思,我想你得找懂英语的人来翻译你想要的

无论如何,正如我在评论中所写的,您可以像以前一样使用继承类,或者使用类扩展,我将添加一个。如果你告诉我这就是你的意思,我会编辑我的问题,使它更符合你的具体问题

至于问题的最后部分:

但是,如何获得MProcess?进程类的静态方法,如 仅作为GetCurrentProcess(),GetProcessByName(字符串ProcessName) 返回一个或多个进程对象,我尝试强制转换,但无法


静态方法
GetCurrentProcess()
将返回一个
Process
类。不能因为创建了继承类就强制转换类,也不能因为苹果树是树的一种形式就拿一棵树说它是苹果树。不要重写进程类。在MPProcess类中添加Process属性并对其执行操作。像这样:

public class MProcess
{
   //...blah blah
   //...

   private System.Diagnostics.Process myProcess;

   public System.Diagnostics.Process MyProcess
   {
       get {return myProcess;}
       set {myProcess = value;}
   }

   //...blah blah
}

好吧,Process是一个本机类,所以您不能更改它。您可以继承或扩展它。我想你需要的是继承扩展方法可能是添加一些方法的最佳方式。哦,非常感谢。谢谢,现在我有了答案。我首先使用了这种方式,我不喜欢mpprocess.MyProcess.Kill()的方式,所以我为mpprocess写了一个方法Kill是的,现在我明白了铸造是不可能的,必须编写扩展或保留我以前所做的。
Process prc = Process.GetProcessesByName("ThankForRead.exe")[0];
prc.GoAway();
public class MProcess
{
   //...blah blah
   //...

   private System.Diagnostics.Process myProcess;

   public System.Diagnostics.Process MyProcess
   {
       get {return myProcess;}
       set {myProcess = value;}
   }

   //...blah blah
}