Question Classes C# et using

Plus d'informations
il y a 15 ans 1 mois #8726 par sokai
Classes C# et using a été créé par sokai
Lors de l'enregistrement d'une signature d'une classe C#.

Lorsque je fais :


[code:1]$signature = @\"
using System;
using System.Windows.Form;

.
.
.
\"@
[/code:1]



Je reçois : Le type ou le nom d'espace de noms 'Windows' n'existe pas...

Alors que si je fais directement add-type -assemblyname System.Windows.Form ca marche.

Quelqu'un pourrait-il m'expliquer pourquoi ?

Merci<br><br>Message édité par: sokai, à: 4/02/11 13:57

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 1 mois #8727 par Arthur
Réponse de Arthur sur le sujet Re:Classes C# et using
test : \&quot;using System.Windows.Forms;\&quot;
Avec un \&quot;s\&quot; a form.

msdn.microsoft.com/en-us/library/system.windows.forms.aspx

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 1 mois #8782 par sokai
Réponse de sokai sur le sujet Re:Classes C# et using
Erreur de recopiage :).

Il y a bien le \&quot;s\&quot; dans ma signature.
Le problème ne vient pas de là.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 1 mois #8786 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Classes C# et using
sokai écrit:

Quelqu'un pourrait-il m'expliquer pourquoi ?

Il me semble que l'usage du mot clè using est interprété par le compilateur,sans plus, mais le linker à besoin de connaître les assemblies référencées.
Add-Type utilise les APIs CodeDom qui fonctionnent de la même manière.

Je peux avoir \&quot;Using Company.Tools.Class\&quot; avec Company.Tools.Class hébergée par Toto.dll.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 1 mois #8935 par sokai
Réponse de sokai sur le sujet Re:Classes C# et using
Hmmmm il y a quelque chose que je ne comprends pas.

Si Add-Type fonctionne de la même manière que le using,
pourquoi \&quot;add-type -assemblyname System.Windows.Forms\&quot; marche et pas \&quot;using System.Windows.Forms;\&quot; dans la signature ? ... :dry:

Dois-je référencé l'assemblie au linker ?
Si oui comment fait-on ?

Merci pour vos réponses :P !

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 1 mois #8948 par Arthur
Réponse de Arthur sur le sujet Re:Classes C# et using
Il faut juste ajouter une Assembly.
Enfin ca à l'air de marcher, mais je n'ai jamais crée une interface graphique en C# sur une console powershell. :silly:


[code:1]$GUI= @\&quot;
using System;
using System.Windows;
using System.Windows.Forms;
using System.Text;

public class GUI
{
public void Exemple()
{
MessageBox.Show(\&quot;Salut\&quot;«»);
}
}
\&quot;@
Add-Type -TypeDefinition $GUI -ReferencedAssemblies \&quot;System.Windows.Forms\&quot;
$TestGUI = New-Object \&quot;GUI\&quot;
$TestGUI.Exemple()[/code:1]

EDIT: Arf grillé.

Sinon d'après powershell (paramètre ReferencedAssemblies) : \&quot;Specifies the assemblies upon which the type depends. By default, Add-Type references System.dll and System.Man
agement.Automation.dll. The assemblies that you specify by using this parameter are referenced in addition to t
he default assemblies.\&quot;

Ensuite il faut regarder du coté du msdn prenons l'exemple de la classe TcpClient :

msdn.microsoft.com/fr-fr/library/system....ckets.tcpclient.aspx

On peut voir que Assembly : System (dans System.dll)

Si l'on regarde Windows.forms par exemple

msdn.microsoft.com/en-us/library/system.windows.forms.form.aspx

Assembly: System.Windows.Forms (in System.Windows.Forms.dll)

On peut donc voir que forms est dans une autre dll qui n'est pas chargée par défaut par powershell.
Il faut donc la préciser.
Enfin c'est ma théorie mais elle à l'air correct.

Heureusement que les classes .net n'ont pas la même doc que powershell. :P

Message édité par: bilbao, à: 17/02/11 20:45<br><br>Message édité par: bilbao, à: 17/02/11 20:53

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.055 secondes
Propulsé par Kunena