2009-06-24 2 views
0

J'ai un ensemble de propriétés définies, les valeurs sont toutes stockées en tant que chaînes. Je dois retourner un nouvel ensemble de propriétés où la valeur de chaque nouvelle propriété peut être dérivée de l'une des trois façons suivantes.Mappage d'un ensemble de propriétés à un autre ensemble où plusieurs propriétés de source peuvent être utilisées dans les règles de conversion?

  1. Une copie directe d'une valeur source spécifique.
  2. Une valeur par défaut.
  3. Résultat d'une logique appliquée aux valeurs de 1 ou plusieurs propriétés de source.

Mon approche de ce problème consistait à créer une interface IMappable qui définit une méthode GetValue (Dictionary SourceValues).

Pour chaque résultat j'ai défini une implémentation de cette interface avec la logique requise dans cette méthode.

J'ai une méthode de fabrication qui retourne un IMappable sur la base du nom de la propriété:

private IMappable GetMapper(string LocalPropertyName) 
{ 
    char[] Chars = LocalPropertyName.ToCharArray(); 
    Chars[0] = Char.ToUpper(Chars[0]); 
    string ClassName = new string(Chars) + "Mapping"; 

    try 
    { 
     Assembly AssemblyInstance = Assembly.GetExecutingAssembly(); 
     Type ClassType = AssemblyInstance.GetType("MyNamespace.Rules." + ClassName, false, true); 
     return (IMappable) System.Activator.CreateInstance(ClassType); 
    } 
    catch (System.Exception e) 
    { 
     //No Mapper exists 
     return new DefaultMapping(LocalPropertyName); 
    } 

} 

Est-ce la meilleure façon d'aborder ce problème? J'ai l'impression d'être le plus élégant, mais je m'inquiète de l'impact de la charge dynamique sur les performances.

Répondre

0

Est-ce lent? Profil il en test et puis s'inquiéter de la lenteur ou non il est.,

Questions connexes