Wie greifen Sie auf die Eigenschaften einer Klasse von einer anderen Klasse
Meiner Konstruktor-code in "FileData.cs" - Datei:
public FileData(BatchData batch)
{
this._batch = batch;
}
Möchte ich auf die Eigenschaften von der "FileData.cs" - Datei. Also benutzte ich folgenden code:
FileData fd = new FileData();
Zeigt es die Fehlermeldung als "Konstruktor keine 0 Argumente". Ich weiß nicht, wie Sie auf die Eigenschaften von der Klasse. Geben Sie mir eine Lösung. Danke.
- Sie übergeben die parameter an den Konstruktor FileData
new FileData(new BatchData());
- Ich meine, Sie keine Respektlosigkeit, sondern für Ihre eigenen gut, man sollte Lesen ein c# Buch.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie nicht das default-Konstruktor. Sie beinhalten muss, wie der compiler generiert wird nicht standardmäßig.
Im Grunde seit Sie definiert einen expliziten Konstruktor mit einem argument, der compiler generiert wird nicht die default, daher dein Fehler.
Oder:
Die Fehlermeldung ist ziemlich eindeutig. Sie können nicht bauen eine
FileData
Objekt ohne übergabe von Daten. Sie müssen, um Sie mit einerBatchData
Instanz im Konstruktor, um eine neue zu erstellenFileData
. Vorausgesetzt, dieses Verhalten beabsichtigt ist, dann müssen Sie erstellen Sie eine neue Instanz vonBatchData
oder den Zugriff auf eine vorhandene, und bauen das Objekt.Wenn das problem ist, dass Sie sollten in der Lage sein erstellen Sie eine Instanz der
FileData
ohneBatchData
Instanz, dann müssen Sie einen neuen Konstruktor zuFileData
dass keine Parameter. Wenn Sie das tun, den code hast du in deinem post funktioniert wieder.sollten Sie definieren Defualt Konstruktor für die Klasse FileData :
und für die access-Eigenschaft : beim definieren einer öffentlichen Eigenschaft, die Sie zugreifen können, diese Eigenschaft von anthor Klasse.
Müssen Sie einen parameterlosen Konstruktor ausdrücklich
Nehmen in Kon dass, wenn
_batch
Feld ist notwendig für die Klasse-Instanz durchführen zu können notwendige Operationen, müssen Sie Sie initialisieren es auf der parameterlose Konstruktoroder setzen Sie es mit einer öffentlichen Eigenschaft.
könnten Sie automatische Eigenschaften um Ihren code zu vereinfachen
BatchData
notwendig ist, dann wäre es eine schlechte Idee ist, erstellen Sie einen parameterlosen Konstruktor in den ersten Platz (sogar mit einer öffentlichen Eigenschaft). Das problem wäre nicht in derFileData
definition aber in den code, der die Instanz erstellt.batch
ist notwendig, dass bedeutet nicht, dass Sie zu Durchlaufen haben, durch den contructor. Es bedeutet nur, dassbatch
initialisiert werden muss, im moment verwendet werden. Als ich sagte mehrmals schon, das ist etwas sehr Häufig, dass Sie scheinen zu ignorieren. Mein letztes Wort zu dieser, sonst immer ein forum. Danke für dein feedback.BatchData
bietet ein sinnvolles Objekt, das verwendet werden kann, indemFileData
. Von Ihrer Logik Konstruktoren sollten nur entfernt werden, aus der Sprache, da kann man einfach bauen das Objekt, nachdem es erstellt wurde. Sie scheinen auch zu sein, vorausgesetzt, dass die Klasse, wie geschrieben, ist völlig falsch, eher als dass es geschrieben wurde wie es ist absichtlich. Beide sind gültige Möglichkeiten, und Sie scheinen zu wollen, ignorieren Sie vollständig.1), sollte der parameter BatchData zu Ihrer Klasse.
2), Um Zugriff auf das Eigentum können Sie ...
a)...nur machen Sie es öffentlich:
und Zugriff auf Ihre Eigenschaft wie
b) oder schreiben Sie getter-und setter -
und Zugang wie