Ich habe ein Klassenbibliotheksprojekt, und mein Namensraum/Hauptklasse sieht wie folgt aus:Das Unterteilen der Klassendatei in partielle Klassen beeinflusst den Gültigkeitsbereich?
Datei: Document.cs
namespace HtmlEngine
{
public class Document : IDisposable
{ ...
public class DocumentActionReplaceByTag : IDocumentAction
{
All dies funktioniert gut, und in einem anderen Projekt/Montage Ich habe:
using HtmlEngine;
...
DocumentActionReplaceByTag currentDocAction = new HtmlEngine.DocumentActionReplaceByTag("[NEXT_PART]");
und es funktioniert perfekt. Allerdings habe ich diese Dokumentklassendatei jetzt in mehrere Dateien unterteilt, die als DocumentActions.cs, DocumentSections.cs bezeichnet werden, und die Hauptfunktionalität in meiner Document.cs-Datei beibehalten. An der Spitze jeder dieser Ich habe:
public partial class Document : IDisposable
{
Jetzt, im raubend Projekt, das ich eine bekommen ‚kann nicht lösen Symbol‚DocumentActionReplaceByTag‘‘ Fehler. Ich habe immer noch meine Referenz auf HtmlEngine.
Die nächste Sache auf dem ‚Netz ich diesen Beitrag finden konnte, war die in ähnlicher Weise meine Notlage beschreibt, aber er war über die Gründe dafür nicht ganz klar passiert: http://www.daniweb.com/software-development/csharp/threads/140673/understanding-partial-classes
Ich habe immer daran geglaubt, partielle Klassen syntaktischen waren Zucker und sie wurden vor der Kompilierung zu einer einzigen Klasse zusammengefasst. Ich habe die Schnittstelle für jede partielle Klassendeklaration wiederholt, nicht sicher, ob das ein Faktor sein könnte.
Warum sollte das jetzt nicht mehr möglich sein?
Danke Andris. Das ist korrekt. Wenn Sie den expliziten Verweis hinzufügen, wird der Job ausgeführt, aber ich möchte weiterhin auf DocumentActionReplaceByTag ohne das Präfix zugreifen. So funktionierte es vor der Aufteilung der Klasse. Ich habe IDisposable von den anderen Dateien entfernt, aber das machte keinen Unterschied. Ich kann nicht hinzufügen "mit HtmlEngin.Document" als dies ist kein Namespace - meine Frage ist, warum es anders verhält (und hoffentlich, was kann ich tun, um es zu lösen). Thx – Glinkot
Ich füge Beispiel hinzu, mit der Verwendung von geschachtelten Klassen. Bitte geben Sie weitere Einzelheiten an, wenn Sie das Gefühl haben, Ihre Situation nicht verstanden zu haben. – Andris
Hallo Andris. In diesem Fall (siehe desc in Originalfrage) verwende ich die Klasse aus einer anderen Assembly/Namespace. Die geschachtelte Klasse könnte ohne Qualifizierung instanziiert werden, wenn die Klassen in einer einzigen Datei sind, und doch, wenn ich sie in Teilklassen unterteile, funktioniert das nicht mehr! Gemäß der Beschreibung des Kerls im Link auf meiner Frage. Ich verstehe nicht, warum ich mich dann jeweils mit Elternklasse qualifizieren müsste. Ich muss nur die Klasse neu kombinieren, wenn es darauf ankommt, und Regionen verwenden. Vielleicht ist das sowieso besser, aber ich frage mich immer noch, warum der Umfang geändert wird. – Glinkot