Bonjour,
je possède une classe à laquelle j'ai rattaché des costums attribute.
Ces attributs ont une valeur par défaut que je changerai au fur et à mesure j'instancie ma classe.
Mon problème, c'est que je n'arrive pas à changer ces valeurs par défaut.

voici ce que je fais

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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
 
 
public class ClsDataBaseElement
	{
 
		private string s_User;
		protected string s_Pwd;
		protected string s_CheminIP;
		protected string s_CheminDivers;
		protected string s_DataBaseType;
		protected string s_FileExtension;
		protected Int32 iType;
		public ClsDataBaseElement(string col)
		{
		}
		/// <summary>
		/// Constructeur de la classe des éléments d'une base des données
		/// </summary>
		private ClsDataBaseElement()
		{
			Int32 i =0;
			Type MyType = typeof(ClsDataBaseElement);
 
 
 
			PropertyInfo[] LProp = MyType.GetProperties();
 
			foreach (PropertyInfo Pi in LProp)
			{
 
				Attribute[] atrib=Attribute.GetCustomAttributes(Pi,typeof(CpropertyRequired));//          GetCustomAttributes(Pi,typeof(CpropertyRequired));
				object[] Obj = Pi.GetCustomAttributes(typeof(CpropertyRequired),true);
				if (Pi.IsDefined(typeof(CpropertyRequired),true))
				{
					object o = Activator.CreateInstance(typeof(ClsDataBaseElement),new object[]{"TEST"});
					CpropertyRequired Oprop = Obj[0] as CpropertyRequired;
					Oprop.Required = true;
					System.Windows.Forms.MessageBox.Show(Pa.ToString());
					Pi.SetValue(o,Oprop,null);
				}
 
 
			}
		}
		/*public static void InitDefaults(this object o)
		{
		}*/
		public static ClsDataBaseElement ParseForElement()
		{
			ClsDataBaseElement od = new ClsDataBaseElement();
			return od;
		}
		public string p_s_DataBaseType
		{
			get {return this.s_DataBaseType;}
			set {this.s_DataBaseType = value;}
		}
		[CpropertyRequired(false)]
		public string p_s_UserName
		{
			get {return this.s_User;}
			set {this.s_User = value;}
		}
		[CpropertyRequired(false)]
		public string p_s_Password
		{
			get {return this.s_Pwd;}
			set {this.s_Pwd = value;}
		}
		[CpropertyRequired(false)]
		public string p_s_CheminIp
		{
			get {return this.s_CheminIP;}
			set {this.s_CheminIP = value;}
		}
		[CpropertyRequired(false)]
		public string p_s_CheminDivers
		{
			get {return this.s_CheminDivers;}
			set {this.s_CheminDivers = value;}
		}
		public Int32 p_i_Type
		{
			get {return this.iType;}
			set {this.iType = value;}
		}
		[CpropertyRequired(false)]
		public string p_s_FileExtension
		{
			get { return this.s_FileExtension;}
			set { this.s_FileExtension = value;}
		}
		public string GetElementType
		{
			get {return this.s_DataBaseType;}
		}
	}
	#region "Attribut de la classe"
	[AttributeUsage(AttributeTargets.Property,AllowMultiple = false)]
	public class CpropertyRequired : System.Attribute
	{
		public Boolean Required= false;
		public CpropertyRequired(Boolean Asaisir)
		{
			this.Required = Asaisir;
		}
	}
	#endregion
Si quelqu'un a une idée.

Ne préocuppez pas du fait que je fasse cela à l'intérieur de la classe, car c'est un test. En effet si cela fonctionne, cette portion de sera projetté ailleurs. Le constructeur private n'est là que pour des questions d'accession.

Merci. a+