2016-05-09 8 views
0

Ich habe die Folge Klasse, die von Entity FrameworkWarum gibt es immer noch eine Mehrdeutigkeit in den Definitionen, wenn Sie eine Klasse teilen?

public partial class Album 
{ 
    public int AlbumID { get; set; } 
    public string Title { get; set; } 
    public decimal Price { get; set; } 
} 

Ich habe auch die folgenden in einer anderen Klasse

public class Album 
{ 
    public int AlbumID { get; set; } 
    public string Title { get; set; } 
    public decimal Price { get; set; } 
} 

Ich mag würde, warum Visual Studio wissen, ist mir ein Fehler über Zweideutigkeit geben und ein bereits existierende Definition, wenn die generierte Klasse eine partielle Klasse ist. Ich habe versucht, die nicht-partielle Klasse teilweise zu machen, aber es gab mir immer noch einen Fehler.

Fehler: Fehlender partieller Modifikator bei der Deklaration des Typs 'Album'; Eine weitere Teildeklaration dieses Typs existiert

+0

Welcher Fehler, dieser? _ "Fehlender partieller Modifikator bei der Deklaration des Typs 'Album'; eine weitere partielle Deklaration dieses Typs existiert" _ –

+0

Der Grund dafür ist, dass Visual Studio nicht weiß, welches zu verwenden ist. Es spielt keine Rolle, ob es sich um eine Teilklasse handelt oder nicht. Solange es zugänglich ist, wo auch immer Sie es genannt haben, wird es immer noch Verwirrung stiften. – Auguste

+0

@TimSchmelter ja! –

Antwort

2

Eine "Partial" -Klasse ist nur eine Möglichkeit, Code in einer Klasse zwischen Dateien zu brechen. Sie können dies für die Benutzerfreundlichkeit oder sogar für die Code-Generierung tun, aber das ist alles, was es wirklich tut.

Alle Klassendefinitionen mit diesem Namen in diesem Namespace für diese Klasse müssen als "partiell" für it to work gekennzeichnet werden.

Ihre zweite Klasse "bricht" die partielle Funktionalität, weil sie nicht als partiell markiert ist, sondern mit demselben Namen im selben Namensraum existiert. Sie haben auch doppelte Definitionen von Eigenschaften, die Ihren NEXT-Fehler verursachen, sobald Sie diesen behoben haben.

Was bringt die offensichtliche Frage auf? Warum glauben Sie, dass Sie zwei Klassen brauchen, die dasselbe im selben Namensraum tun?

+0

Wenn es nicht zu viel ist, versuchen Sie einen Blick auf https://youtu.be/hYUASO5dnAk?t=52m15s er hat zwei Klassen, die das gleiche tun und schafft keinen Fehler. Ich frage mich nur, wie er keine –

+1

bekomme ich werde nicht die volle Stunde sehen. Ich vermute stark, dass seine zwei Klassen in verschiedenen Namensräumen sind. Lesenswert: https://msdn.microsoft.com/en-us/library/wa80x488.aspx - "Alle Teile müssen das partielle Schlüsselwort verwenden." –

Verwandte Themen