J'utilise un J'utilise la ligne de code suivante pour obtenir l'élément du cache: p> mais, malheureusement quand je mettant à jour le _chartData strong>, il Mise à jour également l'élément mis en cache. P> Comment puis-je simplement obtenir une copie de l'élément mis en cache? p> p> httpruntime.cache code> pour stocker une liste d'objets qui accéderont fréquemment à travers les sessions.
3 Réponses :
Utilisation: Il copiera tous les éléments de _chartData code> à Liste code>. p> p> P>
Notez que ce sera une copie profonde de l'objet afin que vous puissiez vous assurer que le cache et cette copie restent à synchroniser autrement ... Ooooops!
Peut-être une petite explication sur laquelle sa copie met également à jour la version du cache. Va obtenir mon up vote = p
Liste est un type de référence et _chartData contient l'adresse de l'objet d'origine stocké dans le cache. C'est pourquoi lorsque vous mettez à jour _chartData, il met à jour l'objet mis en cache. Si vous voulez un objet séparé, clonez l'objet mis en cache. Voir la référence ci-dessous p>
http: // www.codeproject.com/articles/33364/asp-net-runtime-cache-clone-Objects-a-preserve-ca P>
http: // www.codeproject.com/articles/45168/asp-net-runtime-cache-clone-Objects-a-preserve-ca P>
C'est la façon dont .NET fonctionne parce que le cache juste référence au pointeur em> de la liste Si Type de valeur, il est facile à utiliser: P> code>. Je ne sais pas si vous graphtdata_type code> est le type de valeur ou le type de référence. var cloneChartData = _chartData.Select(d =>
CloneHelper.DeepClone<chartData_Type>(d))
.ToList();
Je me demande si appfabric ou NCache résoudrait ce problème. J'ai demandé à cela dans un autre fil: Stackoverflow.com/Questtions/23546817/...