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 :
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;
        }
    }
Mon problème est comment récupérer le type T2 dans une List<T2>, par exemple, afin de faire de la récursivité ?

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);
        }