coucou,

voila j\'ai un petit souci. Je dois faire un projet pour mon école et débute seulement le langage c# et je dois faire de la reflexion. J\'ai trouver un code sur msn qui fait normalement ce que je souhaite oui mais voila je n\'arrive pas acceder au méthode get/set a partir d\'une autre classe(il reconnait la classe mais pas les methodes).
Si quelqu\'un pouvait m\'aider.

Merci

Le code pour creer ma dll :

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
 
using System;
using System.Reflection;
using System.Reflection.Emit;
using System.Threading;
 
namespace ReflectionEmit
{
    class ClassTestReflectionE
    {
 
        static void Main(string[] args)
        {
            AppDomain myDomain = Thread.GetDomain();
            AssemblyName myAsmName = new AssemblyName();
            myAsmName.Name = \"MyDynamicAssembly\";
 
            // To generate a persistable assembly, specify AssemblyBuilderAccess.RunAndSave.
            AssemblyBuilder myAsmBuilder = myDomain.DefineDynamicAssembly(myAsmName,
                                                            AssemblyBuilderAccess.RunAndSave);
            // Generate a persistable single-module assembly.
            ModuleBuilder myModBuilder =
                myAsmBuilder.DefineDynamicModule(myAsmName.Name, myAsmName.Name + \".dll\");
 
            TypeBuilder myTypeBuilder = myModBuilder.DefineType(\"CustomerData\",
                                                            TypeAttributes.Public);
 
            FieldBuilder customerNameBldr = myTypeBuilder.DefineField(\"customerName\",
                                                            typeof(string),
                                                            FieldAttributes.Private);
 
            // The last argument of DefineProperty is null, because the
            // property has no parameters. (If you don\'t specify null, you must
            // specify an array of Type objects. For a parameterless property,
            // use an array with no elements: new Type[] {})
            PropertyBuilder custNamePropBldr = myTypeBuilder.DefineProperty(\"CustomerName\",
                                                             PropertyAttributes.HasDefault,
                                                             typeof(string),
                                                             null);
 
            // The property set and property get methods require a special
            // set of attributes.
            MethodAttributes getSetAttr =
                MethodAttributes.Public | MethodAttributes.SpecialName |
                    MethodAttributes.HideBySig;
 
            // Define the \"get\" accessor method for CustomerName.
            MethodBuilder custNameGetPropMthdBldr =
                myTypeBuilder.DefineMethod(\"get_CustomerName\",
                                           getSetAttr,
                                           typeof(string),
                                           Type.EmptyTypes);
 
            ILGenerator custNameGetIL = custNameGetPropMthdBldr.GetILGenerator();
 
            custNameGetIL.Emit(OpCodes.Ldarg_0);
            custNameGetIL.Emit(OpCodes.Ldfld, customerNameBldr);
            custNameGetIL.Emit(OpCodes.Ret);
 
            // Define the \"set\" accessor method for CustomerName.
            MethodBuilder custNameSetPropMthdBldr =
                myTypeBuilder.DefineMethod(\"set_CustomerName\",
                                           getSetAttr,
                                           null,
                                           new Type[] { typeof(string) });
 
            ILGenerator custNameSetIL = custNameSetPropMthdBldr.GetILGenerator();
 
            custNameSetIL.Emit(OpCodes.Ldarg_0);
            custNameSetIL.Emit(OpCodes.Ldarg_1);
            custNameSetIL.Emit(OpCodes.Stfld, customerNameBldr);
            custNameSetIL.Emit(OpCodes.Ret);
 
            // Last, we must map the two methods created above to our PropertyBuilder to 
            // their corresponding behaviors, \"get\" and \"set\" respectively. 
            custNamePropBldr.SetGetMethod(custNameGetPropMthdBldr);
            custNamePropBldr.SetSetMethod(custNameSetPropMthdBldr);
 
 
            Type retval = myTypeBuilder.CreateType();
 
            // Save the assembly so it can be examined with Ildasm.exe,
            // or referenced by a test program.
            myAsmBuilder.Save(myAsmName.Name + \".dll\");
 
 
        }
    }
}