Bonjour

Bon je savais pas trop ou poster ça vu que mon code utilise deux langages ...

Donc voila j'ai un petit soucis j'espère que vous serrez en mesure de m'éclairer un peu

Donc j'ai des .h en C++/CLI qui contiennent des interfaces qui sont en suite utilisée plus loin par des .cpp ... Tout ces points h sont assemblés a la compilation dans une dll.

Mon but est de générer certainnes parties du code des classes interfacées ua l'aide de code en C# dans T4 Editor. J'ai donc essayé de creer un attribute en C++/CLI que je placerais sur les classes que je veux générer uniquement.

La classe Attribute :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
    public ref class InterfaceGeneratedAttribute: public Attribute
    {
    protected:
        String^ name;
 
    public:
        InterfaceGeneratedAttribute(String^ str)
        {
            name = str;
        }
 
        property String^ title
        {
            void set(String^ value)
            {
                name = value;
            }
            String^ get()
            {
                return name;
            }
        }
    };
Je place en suite mes attributs sur les classes qui doivent êtres générées de cette façon :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
[InterfaceGenerated("Light")]
public interface class ILight : IDestroyable
{
...
}
Je génère ma dll pas de warnings.

Mais quand je veux charger la dll dans le C# impossible de récupérer des attributs avec ce code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
Assembly asm = Assembly.ReflectionOnlyLoadFrom(@"C:\....dll");
IList<CustomAttributeData> attributes = CustomAttributeData.GetCustomAttributes(asm);
Malheureusement "attribute" reste vide.

Avez vous une idée ?

La doc dispo sur internet etant très light mise a part la msdn et elle ne couvre presque jamais le chargement depuis une dll.