Gerçekten "iyi bir fikir" olarak düşündüğünüze göre değişir.
Bu çalışıyor ve oldukça zarif bir şekilde çalışır. Diğer yaklaşımlara göre bazı avantajları ve dezavantajları vardır.
- Hata denetimi potansiyel olarak:
- O
- kod uzatmak için özlü ve kolay dezavantajları için
oldukça basittir: avantajı tarafında
Klasik bir ziyaretçi uygulamasından daha zor, çünkü tüm hata kontrolleri çalışma zamanında yapılmalıdır. Örneğin, visitorTest.DynamicVisit(4.2);
geçirirseniz, çalışma zamanında bir istisna, ancak hiçbir derleme zamanı şikayetleri alırsınız.
- kod az belirgin olması ve daha yüksek bakım maliyeti olabilir.
Şahsen, bu makul bir yaklaşım. Klasik bir uygulamada ziyaretçi modeli oldukça yüksek bir bakım maliyetine sahiptir ve genellikle temiz bir şekilde test edilmesi zordur. Bu potansiyel olarak maliyeti biraz daha fazla artırır, ancak uygulamayı çok daha basit hale getirir.
iyi hata kontrolü sayesinde
, burada bir yaklaşım olarak dinamik kullanarak bir sorunu yok. Şahsen, muhtemelen böyle bir yaklaşım kullanırdım, çünkü makul bir şekilde gerçekleştiren alternatifler, aksi halde oldukça kötü olur. Bununla birlikte, burada yapacağım birkaç değişiklik var. İlk olarak, bahsettiğim gibi, gerçekten hata kontrolünü dahil etmeniz gerekiyor.
class VistorTest
{
public string DynamicVisit(dynamic obj)
{
try
{
return Visit(obj);
}
catch (RuntimeBinderException e)
{
// Handle the exception here!
Console.WriteLine("Invalid type specified");
}
return string.Empty;
}
// ...Rest of code
Ew. Daha fazla söze ihtiyacım var. – Dykam
Bunun, kafa karıştırıcı olmanın dışında, aşırı yüklenmeden nasıl farklı olduğunu göremiyorum. –
@Dykam, daha ne bilmek istersiniz? – WeNeedAnswers