Bonjour,
j'ai codé une classe générique qui me permet de faire des conversions du contenu de toute les propriétés de type string d'une classe de type T.
Mais voilà, ma classe T peut contenir des types non primitifs et je souhaites rentrer dans ces types et appliquer la conversion. Bref faire de la récursivité si possible.
voici ma classe :Mon problème est comment récupérer le type T2 dans une List<T2>, par exemple, afin de faire de la récursivité ?
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 public class FieldConvertor<T> where T : new() { public T Item { get; set; } public FieldConvertor(object item) { Item = (T)item; } public T ConvertStringPropertiesToHtmlTag() { PropertyInfo[] properties = typeof(T).GetProperties(); foreach (PropertyInfo property in properties) if (property.PropertyType.Name == typeof(string).Name) { object propertyValue = property.GetValue(this.Item, null); if (propertyValue != null && property.GetSetMethod() != null) property.SetValue(this.Item, propertyValue.ToString().Replace("[[", "<").Replace("]]", ">"), null); } return this.Item; } public T ConvertStringPropertiesFromHtmlTag() { PropertyInfo[] properties = typeof(T).GetProperties(); foreach (PropertyInfo property in properties) if (property.PropertyType.Name == typeof(string).Name) { object propertyValue = property.GetValue(this.Item, null); if (propertyValue != null && property.GetSetMethod() != null) property.SetValue(this.Item, propertyValue.ToString().Replace("<", "[[").Replace(">", "]]"), null); } return this.Item; } }
Au passage, si vous avez une remarque pour améliorer, n'hésitez-pas.
Voici un exemple d'utilisation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public ViewResult Details(int id) { Character character = db.Characters.Find(id); character = new FieldConvertor<Character>(character).ConvertStringPropertiesToHtmlTag(); return View(character); }








Répondre avec citation
Partager