C #: Utiliser un espace de nom pour un bloc de code spécifique?
J'ai juste un point de curiosité. Je travaille avec SSRS et en appelant ses méthodes SOAP. J'ai des talons générés /références Web créé et que tout fonctionne bien et je peux faire des appels de service web OK.
Le problème: les deux classes générées à partir du langage wsdl, ReportService2005 et ReportExecution, avoir un certain chevauchement des définitions de classe, comme ParameterValue, DataSourceCredentials, ReportParameter.
En C#, il est un moyen de dire: "Pour ce bloc de code dans la méthode, l'utilisation de cet espace de noms?"
Pseudo /surtout l'accumulation de code d'erreur:
use-this-namespace (ReportService2005)
{
ParameterValue[] values = null;
DataSourceCredentials[] credentials = null;
ReportParameter[] parameters;
}
Je comprends que je peux juste écrire le nom au complet, ReportService2005.ParameterValue[] valeurs = null. Ou je peux alias les deux classes à l'avant de ma classe/contrôleur de déclaration. C'est juste quelque chose que je suis curieux de savoir.
source d'informationauteur Jason | 2010-06-29
Vous devez vous connecter pour publier un commentaire.
Comme d'autres l'ont écrit, je ne pense pas que ce soit possible. Mais ce que vous pouvez faire est de faire un alias de la totalité des espaces de noms au lieu de chaque classe unique que vous souhaitez utiliser, e.g:
Un autre, peu connu, C# fonction qui pourrait vous intéresser, et est similaire à Martin réponse, est essentiellement aliasing une classe dans le
Imports
blocs:et de le déclarer comme
Note Cette fonctionnalité, et l'échantillon, ont été trouvés dans une autre question, en particulier: Les Fonctions cachées de C#?
Je ne pense pas que vous pouvez le faire. Vous devez spécifier le nom complet pour le faire.
Ce que vous pouvez faire, c'est la marque de votre classe que partielle:
dans votre fichier source principal, et de créer un deuxième fichier source avec la méthode où vous souhaitez utiliser l'autre de l'espace de noms
Malheureusement pas. Il n'y a pas de syntaxe pour répondre à ce besoin.
Si le chevauchement des classes sont identiques (pas seulement le même nom) et de partager le même espace de noms XML, etc., vous pouvez être en mesure de prendre avantage de la wsdl.exe l'outil sharetypes fonctionnalité permettant de générer à la fois de vos proxys de service web afin qu'ils partagent le même type de définitions pour ceux chevauchement des classes.
http://msdn.microsoft.com/en-us/library/7h3ystb6%28VS.80%29.aspx
Découvrez le "/sharetypes" option pour voir si cela fonctionne pour votre situation.
Alors que non pertinentes pour le travail avec espaces de nomsou C#, VB.NET prend en charge la
With
mot-clé qui peut être utilisé comme un raccourci pour accéder aux membres d'un objet:Peut être réécrite comme:
Ce n'est pas en C#, vous pouvez obtenir de très près à la même comportement à l'aide d'autres approché:
Autant que je sache, il ne peut pas être fait