J'ai une configuration similaire au système DependencyProperty et DependencyObject de WPF. Mes propriétés sont cependant génériques. Un BucketProperty a un GlobalIndex statique (défini dans BucketPropertyBase) qui suit tous les BucketProperties. Un Bucket peut avoir plusieurs BucketProperties de n'importe quel type. Un Bucket enregistre et obtient les valeurs réelles de ces BucketProperties ... maintenant, ma question est, comment gérer le stockage de ces valeurs, et quelle est la peine d'utiliser un typecasting lors de leur récupération? J'utilise actuellement un tableau de BucketEntries qui enregistre les valeurs de propriétés en tant qu'objets simples. Existe-t-il un meilleur moyen de sauvegarder et de rendre ces valeurs?Pénalité de performance des types de typage et de boxe/déballage en C# lors du stockage de valeurs génériques
dessous est une version simpliefied:
public class BucketProperty<T> : BucketPropertyBase
{
}
public class Bucket
{
private BucketEntry[] _bucketEntries;
public void SaveValue<T>(BucketProperty<T> property, T value)
{
SaveBucketEntry(property.GlobalIndex, value)
}
public T GetValue<T>(BucketProperty<T> property)
{
return (T)FindBucketEntry(property.GlobalIndex).Value;
}
}
public class BucketEntry
{
private object _value;
private uint _index;
public BucketEntry(uint globalIndex, object value)
{
...
}
}