Teilklasse in verschiedenen Namespaces
Kann ich erstellen partielle Klassen in verschiedenen namespaces sind? Wird es funktionieren, richtig?
e.x.:
class1.cs
namespace name1
{
public partial class Foo
{
Bar1(){
return 10;
}
}
}
class2.cs
namespace name1.name2
{
public partial class Foo
{
Bar2(){
return 100;
}
}
}
main.cs
using name1;
using name1.name2;
namespace mainClass
{
public class mainClass
{
Foo classFoo = new Foo();
int Count = classFoo.Bar1() + classFoo.Bar2();
//Will Count = 110?
}
}
Was soll ich tun damit es funktioniert? (wenn mein Beispiel nicht korrekt)
InformationsquelleAutor der Frage RAMe0 | 2010-12-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen Klassennamen enthält, ist der Namensraum, so
name1.Foo
undname1.name2.Foo
sind zwei völlig unterschiedliche Typen. Also die kurze Antwort auf Ihre Frage ist: Nein.Warum müssen Sie so etwas tun?
InformationsquelleAutor der Antwort CodingGorilla
Partielle Klasse ist nur möglich im gleichen Namensraum und dieselbe Montage.
Namensraum in zwei verschiedenen Versammlungen, aber teilweise Klasse konnte nicht.
InformationsquelleAutor der Antwort Abdul Saboor
Hier sind einige Punkt zu beachten, während der Durchführung der partiellen Klassen:-
Verwenden partial-Schlüsselwort, in jedem Teil der partiellen Klasse.
Namen von jedem Teil der partiellen Klasse sollten die gleichen sein, aber den Namen der Quelldatei für jeden Teil der partiellen Klasse unterschiedlich sein kann.
Alle Teile einer partiellen Klasse zu sein, die in dem gleichen Namensraum.
Jeder Teil einer partiellen Klasse in der gleichen assembly oder DLL, in anderen Worten: Sie können nicht erstellen Sie eine partielle Klasse in source-Dateien von einer anderen Klasse Bibliothek-Projekt.
Jedes Teil eine partielle Klasse hat die gleiche Zugänglichkeit. (wie private, public oder protected)
Wenn Sie eine Klasse Erben oder eine Schnittstelle auf eine partielle Klasse, dann ist es vererbt auf alle Teile einer partiellen Klasse.
Wenn ein Teil der partial-Klasse versiegelt ist, dann ist die gesamte Klasse wird versiegelt.
Wenn ein Teil der partiellen Klasse ist Abstrakt, dann ist die gesamte Klasse wird als abstrakte Klasse.
InformationsquelleAutor der Antwort Farhan S.
Wird dies nicht funktionieren. Der compiler wird Ihnen ein Mehrdeutiger name-Fehler auf der
Foo classFoo = new Foo();
Linie. Für die partielle Klassen arbeiten, müssen Sie sich im gleichen namespace, da der namespace ist eigentlich ein Teil des vollständig qualifizierten Namen des Typs.InformationsquelleAutor der Antwort Harry Steinhilber
Auch für statische Klassen, die Sie implementieren können, so etwas wie dies mit Hilfe von frischen, C# 6.0 mit statischer Funktion.
Betrachten:
Recht, das lässt sich nicht kompilieren, die Fehlermeldung ist klar. Um die situation zu beheben können Sie direkt angeben, namespaces (aber das wollen Sie nicht soweit ich das verstanden habe):
ODER Sie anwenden können mit statischen Funktion so:
Vielleicht ist es ok, dies zu tun für einige Helfer/utils Klassen. Aber teilweise sind die Klassen nicht die Art und Weise, wie andere bemerkt haben.
InformationsquelleAutor der Antwort psfinaki
Einschränkungen zu partiellen Klassen und der Methode von MSDN https://msdn.microsoft.com/en-us/library/wa80x488.aspx
InformationsquelleAutor der Antwort Sandeep