C# 如何扩展System.Windows.Input.Keyboard类

C# 如何扩展System.Windows.Input.Keyboard类,c#,C#,我想向System.Windows.Input.Keyboard添加一些附加方法。我已经尝试创建这样的分部类 namespace System.Windows.Input { public static partial class Keyboard { //some code... } } 但是,当我尝试使用此重新竖琴时,它会通知我这不是一个部分文件,当我尝试使用它时,我会得到一个不明确的引用错误,尽管两个键盘显示为在同一名称空间中。我想做的是可能的

我想向System.Windows.Input.Keyboard添加一些附加方法。我已经尝试创建这样的分部类

namespace System.Windows.Input
{
    public static partial class Keyboard
    {
        //some code...
    }  
}

但是,当我尝试使用此重新竖琴时,它会通知我这不是一个部分文件,当我尝试使用它时,我会得到一个不明确的引用错误,尽管两个键盘显示为在同一名称空间中。我想做的是可能的吗?如果不可能,为什么不呢?

你不应该使用和键盘相同的名称空间,这个类应该是静态的,你可以给这个类命名任何你想要的键盘扩展,例如


有关扩展方法的信息,请参见此部分。您不应使用与键盘相同的命名空间,该类应仅为静态类,您可以根据需要命名该类,例如KeyboardExtensions

有关扩展方法的信息,请参见此部分。不,这是不可能的。键盘是一个静态类。 静态类不能被实例化,也不能被扩展

您可以编写自己的静态类并将方法放在其中。

不,这是不可能的。键盘是一个静态类。 静态类不能被实例化,也不能被扩展


您可以随时编写自己的静态类并将方法放在其中。

查看手册,您可以看到System.Windows.Input.Keyboard未定义为partial,因此无法以这种方式进行扩展

更好的方法是编写一个继承类

namespace MyApplication.Wrapper
{
    public static class MyKeyboard : System.Windows.Input.Keyboard
    {
        //some code...
    }  
}

通过查看手册,您可以看到System.Windows.Input.Keyboard未定义为部分,因此无法以这种方式扩展它

更好的方法是编写一个继承类

namespace MyApplication.Wrapper
{
    public static class MyKeyboard : System.Windows.Input.Keyboard
    {
        //some code...
    }  
}

您试图做的是不可能的,因为键盘类一开始并不偏袒

不明确的引用是由于您正在创建一个已经存在于同一命名空间中的类,因此编译器不知道要使用哪个类

您不能按照@harmoniemand的建议创建从另一个静态类继承的静态类。静态类只能从对象继承


您不能像@Hamza_L所建议的那样在静态类上创建扩展方法,因为您不能在扩展方法中使用静态类型作为参数。

您试图做的是不可能的,因为键盘类一开始就不是局部的

不明确的引用是由于您正在创建一个已经存在于同一命名空间中的类,因此编译器不知道要使用哪个类

您不能按照@harmoniemand的建议创建从另一个静态类继承的静态类。静态类只能从对象继承


您不能像@Hamza_L所建议的那样在静态类上创建扩展方法,因为您不能在扩展方法中使用静态类型作为参数。

Keyboard是一个静态类,因此是密封的。因此它不能被继承。但在文档中它并没有密封的公共静态类键盘。谢谢你。键盘是一个静态类,因此是密封的。因此它不能被继承。但在文档中它并没有密封的公共静态类键盘。谢谢你。比扩展方法更好的唯一方法。