2011-05-19 17 views
8

google aramalarında bir sürü yanı sıra diğer sorular bir sürü okuma edilmiş ve ben net bir çözüm bulamadı oldum. Okuduğum bazı iyi uygulamalar dayanarakC# Konu Güvenli Derin Kopya

, bir sınıfın statik yöntemler parçacığı güvenli oluşturulmalıdır ve örnek üyeler tüketicilere iplik güvenlik bırakmalısınız.

Ders için bir derin kopya yöntemini uygulamak istiyoruz. Sınıfın kendisi başka referans tipi üyelere sahiptir. Sınıfa dahil olan bütün üyelerin üzerine yükü uygulamak zorunda kalmadan, derin kopyalama yöntemi iş parçacığı güvenli hale getirmenin herhangi bir yolu var mı?

cevap

0

klonlama gelince, yığın taşması zaten iyi cevabı vardır.

Deep cloning objects

iplik güvenliği için olduğu gibi, ben size kopya sırasında üye değişkenleri etrafında kilitleri koyarsanız tek garantisidir hayal ediyorum.

Güncelleme:

Tamam, biraz araştırma yaptık. Üyelerinizin iplik güvenliğini sağlamanın en zarif yolunun, çağrı iş parçacığı için, sınıfınızın içinde uygulamak yerine, nesnenin üzerinde kilitler tutmasını sağlamak olduğunu düşünüyorum. Ayrıca, ICONeable arabirimini uygulayın ve daha sonra tüm nesnenin bir ikili kopyasını kolayca yapabilirsiniz. Yukarıdaki gönderdiğim bağlantıdaki cevaba bakın. Tabii ki, statik üyeleriniz için sınıfınızdaki kilitleri kolayca uygulayabilirsiniz.

+0

Ve anlamlı olurdu her yerde kilitler koyarak performans cezası varsaymak gerekir. – Tim

+0

Yani, klonları sadece nesnelerinizin etrafına klonlama yönteminin içine koyabilirsiniz. Sonra tek maliyet kopya sırasında olurdu. –

+0

Ancak tüm alıcılarınızda/ayarlayıcılarınızda kilitlere ihtiyacınız olmaz mı? – Tim