2010-09-30 24 views
0

J'utilise ManagementClass.GetStronglyTypedClassCode pour obtenir une référence à l'instance CodeTypeDeclaration. Je voudrais changer le nom de classe généré et cette méthode ne le permet pas (pour autant que je sache). J'ai essayé de changer la propriété CodeTypeDeclaration.Name, mais cela ne change pas les noms de constructeurs etc., donc le compilateur C# retourne des erreurs quand la classe est compilée. Je pourrais faire une recherche simple/remplacer sur la classe, mais cela semble peu fiable. Existe-t-il un moyen de modifier de manière fiable le nom d'une classe C# représentée par une instance CodeTypeDeclaration?Modifier le nom de classe C# généré

Il n'y a pas beaucoup de code, mais voici l'extrait pertinent (J'utilise PowerShell):

$WmiClassName = 'Win32_Process' 
$ClassName = 'MyProcess' 

$WmiClass = New-Object ` 
    System.Management.ManagementClass($WmiClassName) 

$classCode = $WmiClass.GetStronglyTypedClassCode($true, $false) 
$classCode.Name = $ClassName # This doesn't change constructor names 

Répondre

0

Je pense que vous pouvez renommer les constructeurs manuellement en dénombrant la propriété Members et modification de la propriété pour Name membres du type CodeConstructor

+0

Je m'excuse, j'ai fait une erreur. Lorsque je modifie la propriété CodeTypeDeclaration.Name, cela change les noms du constructeur. Ce qui ne change pas, ce sont les méthodes statiques de classe utilisées dans les constructeurs. Par exemple, si je change le nom de 'Service' en 'Win32_Service' l'un des constructeurs ressemble à: public Win32_Service (string keyName) {this.InitializeObject (null, nouveau System.Management.ManagementPath (Service.ConstructPath (keyName)) , nul); } où Service.ConstructPath doit être Win32_Service.ConstructPath. –

+0

OK, c'est un peu plus difficile à résoudre alors ... Vous avez probablement besoin de visiter tous les nœuds de l'objet CodeDom pour remplacer le nom du type. Je ne peux pas penser à un moyen plus facile de le faire ... –

+0

Merci, je vais y jeter un coup d'oeil. J'espérais juste qu'il y aurait un moyen plus facile. –