Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 的部分声明不能指定不同的基类_C#_Wpf - Fatal编程技术网

C# 的部分声明不能指定不同的基类

C# 的部分声明不能指定不同的基类,c#,wpf,C#,Wpf,我知道互联网上有这方面的信息,但我很难把它翻译成我的情况 我有一个xaml窗口,我得到了一个错误:“GX3OpenStackupGUIPlugin.GX3OpenStackupGUIPlugin”的部分声明不能指定不同的基类 我的代码是: public partial class GX3OpenStackupGUIPlugin : GX3ClientPlugin, IGX3PluginInterface { 我的xaml是: <Grid xmlns:my="clr-namesp

我知道互联网上有这方面的信息,但我很难把它翻译成我的情况

我有一个xaml窗口,我得到了一个错误:“GX3OpenStackupGUIPlugin.GX3OpenStackupGUIPlugin”的部分声明不能指定不同的基类

我的代码是:

public partial class GX3OpenStackupGUIPlugin : GX3ClientPlugin, IGX3PluginInterface
    {
我的xaml是:

<Grid xmlns:my="clr-namespace:CustomControls;assembly=MultiComboBox"   xmlns:extToolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit/extended"   x:Class="GX3OpenStackupGUIPlugin.GX3OpenStackupGUIPlugin"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

请有人告诉我:)

这里是一个链接,我发现了什么,但我正在努力翻译。。。

在做了更多的研究之后,我发现如果我修改代码来实现xaml中的顶级元素,它就可以消除错误。这显然仍然是一个问题,因为我的codebehind类需要实现我设计的接口

部分类将有两个(或更多)部分。如果搜索,您应该找到另一个
类GX3OpenStackupGUIPlugin
,它可能指定类似
控件的内容作为基本类型。您只查看文件的一部分。另一半可能需要从xaml下扩展

问题是有两个文件正在执行类似的操作:

<namespace:GX3ClientPlugin x:Class="namespace.GX3OpenStackupGUIPlugin">
public partial class GX3OpenStackupGUIPlugin : GX3ClientPlugin
(提交第一份文件)

(第二个文件)


分部类声明意味着您可以在两个不同的文件中为同一个类指定代码:

AOther.cs

public partial class A
{}
public partial class A
{}
public partial class A : B
{}
public partial class A : X
{}
A.cs

public partial class A
{}
public partial class A
{}
public partial class A : B
{}
public partial class A : X
{}
这个错误告诉您这些类定义了不同的基

AOther.cs

public partial class A
{}
public partial class A
{}
public partial class A : B
{}
public partial class A : X
{}
A.cs

public partial class A
{}
public partial class A
{}
public partial class A : B
{}
public partial class A : X
{}
在本例中,A不能从不同文件中的B和X继承。我认为可以在XAML中指定继承链,但在您发布的代码中我看不到有任何东西可以这样做

更新


经过对评论中问题的修改,我建议如下。与其看继承来让控件/窗口从GX3ClientPlugin继承,不如看组合。本质上这意味着,在表单上放置一个GX3ClientPlugin实例并调用它。如果需要为GX3ClientPlugin类编写接口,请让表单实现它,但对于每个方法,只需调用它下面的实例即可。我认为继承是解决这个问题的错误方法,因为您的类有两个问题-UI和GX3ClientPlugin逻辑。

您链接到的问题包含答案。问这个问题的人以这个开头(这很有效):


公共部分B类:A
他们把它改成了这个(这不起作用):


公共部分C类:B类
这不起作用,因为在幕后,.cs文件是基于XAML生成的,该XAML包含从a继承的部分类。要修复它,他们需要将其更改为:

<B x:Class="C">
public partial class C : B

公共部分C类:B类
因此,在您的情况下,我认为您应该更换网格,即执行以下操作:

<namespace:GX3ClientPlugin x:Class="namespace.GX3OpenStackupGUIPlugin">
public partial class GX3OpenStackupGUIPlugin : GX3ClientPlugin

公共部分类GX3OpenStackupGUIPlugin:GX3ClientPlugin

(我假设GX3ClientPlugin最终继承自Grid或UserControl之类的东西?

我在尝试继承TabItem时遇到了这个错误。.cs看起来像:

public partial class ucTabItemSelectionCriteria : TabItem
<UserControl 
XAML的第一行看起来像:

public partial class ucTabItemSelectionCriteria : TabItem
<UserControl 

这两个答案对我来说都有意义,但我找不到“其他”部分类定义的位置。有什么想法吗?当我删除部分时,它会抱怨类的另一个部分删除,但是搜索类的名称不会产生任何结果:(你有GX3OpenStackupGUIPlugin的XAML文件吗(例如,它是WPF控件)或者它只是一个普通的C#类?如果它是一个XAML文件,你能像在网格中一样发布XAML的顶部吗?我想我已经解决了这个问题,但不知道现在该如何解决。我发布的XAML是GX3OpenStackupGUIPlugin.XAML。我需要GX3OpenStackupGUIPlugin从窗口继承。我希望能够让GX3ClientPlugin从窗口继承我是Window类,但我不能继承Window类和另一个类(它需要)。你能让另一个类从Window继承吗?或者你能用合成而不是继承,也就是说,让GX3ClientPlugin包含你的另一个类而不是从它继承吗?它没有,但看起来需要。好吧,那为什么我不能同时从Window类和另一个类继承呢?我不相信.NET支持multiplee继承,但也请参见我在原始问题下的评论。