keine passende Methode zum überschreiben der Fehler mit der partiellen Klasse
muss ich eine Klasse definieren, die teilweise in separaten Baugruppen. eigentlich brauche ich zum definieren einer Klasse teilweise, das ist schon in einer assembly definiert, die in C geschrieben++ Cli, aber das ist vielleicht eine andere Frage.
für den Fall, dass alle codes, die in c# geschrieben, ich habe eine baseclass definition in basenamespace Montage
using System;
namespace BaseNameSpace
{
public class BaseClass
{
public int Num;
public double dNum;
public BaseClass(int s, double d)
{
Num = s;
dNum = d;
}
public virtual void Wrt()
{
Console.WriteLine("{0},{1}", Num, dNum);
}
}
}
ich hinzufügen, den eine andere Versammlung Projekt namens derivedclassSpace und deklarieren Sie eine derivedclass abgeleitet von baseclass. ich habe auch Sie eine partielle definition der Klasse in das Projekt ein.
using System;
using BaseNameSpace;
namespace BaseNameSpace
{
public partial class BaseClass
{
public void Mult()
{
Num *= 2;
}
}
}
namespace DerivedNameSpace
{
public class DerivedClass : BaseClass
{
public DerivedClass(int s)
: base(s, 0)
{
}
public override void Wrt()
{
Mult(); //mult line
base.Wrt();
}
}
}
beim erstellen der Lösung, die ich bekommen
'DerivedNameSpace.DerivedClass.Wrt()':
keine passende Methode zum überschreiben
wenn ich entfernen Sie die partiellen Klasse Linien und mult-Linie, ist alles normal.
bin ich mit dem Konzept der partial-Schlüsselwort? wie kann ich loswerden der Fehler???
InformationsquelleAutor ali_bahoo | 2010-10-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht definieren eine partielle Klasse über Baugruppen. Partielle Klassen und partielle Methoden) sind nur compiler-Funktionen, mit denen Sie aufgeteilt, die definition über Dateien. Sobald die assembly kompiliert wird, gibt es eine einzelne Klasse. Ihre einzige wirkliche option ist die Vererbung von der Basisklasse, fügen Sie Ihre Funktion, dann müssen weitere abgeleitete Klassen Erben von dieser Klasse neue.
Wenn alles, was Sie zu tun versuchen, ist, eine Methode zu einer bestehenden Klasse, aber Sie sollten erwägen, eine Erweiterung-Methode. Während dies nicht tatsächlich fügen Sie der Klasse per se, die es Ihnen erlauben, Ihren code schreiben, als ob es hatte.
Ereignis besser zu sagen - der C# - compiler
es sagt Der name 'Mult' existiert nicht im aktuellen Kontext. ich nehme an, es wird "BaseClassExtensions.Mult(this);"
Sie können aufrufen, dass Sie so (Sie sind nur normale statische Methoden), aber der Zweck von erweiterungsmethoden ist es, das Erscheinungsbild der Aufruf einer Instanz-Methode. Allerdings müssen Sie sich
using
den namespace, in dem die Klasse definiert die Erweiterung Methoden deklariert.InformationsquelleAutor Adam Robinson
Wäre es möglich, die Vererbung von der Basisklasse, und erstellen Sie einen Vermittler Basisklasse für die abgeleitete Klasse? So könnte man hinzufügen, in der fehlenden Funktionalität wie nötig und behalten noch geben dependance auf der ursprünglichen Basis-Klasse. Ich wäre leary über eine Basisklasse erweitern über assembly-Grenzen mit einer partiellen Klasse, auch wenn es funktionieren würde.
InformationsquelleAutor wllmsaccnt