Aşağıdaki sahte C# kodu verilerek çağırır uyarı oluşturmak: (Work()
yöntemini geçersiz kılar) türetilmiş bir sınıf Work()
yöntemi çağrıları, bu şekilde dizaynı ileönlemek/alt overriden elemanı
public abstract class Worker
{
public void DoWork()
{
Prepare();
Work();
Cleanup();
}
protected abstract void Work();
}
, bu mümkün direkt olarak.
Bu çağrı için herhangi bir alt sınıfın nasıl önleneceğine veya en azından bir derleyici uyarısı oluşturmaya yönelik tasarım ipuçları arıyorum.
Bunu neden yapmak istiyorum? İşçi aslında Work()
'u başka bir iş parçacığına gönderir. DoWork()
kilitleme ile ilgilenir.
Biliyorum, bu garip. Work()
-body, sadece DoMyWork()
'a bir yöntem çağrısından oluşabilir ve nesne başka bir yerde DoMyWork()
'u arayabilir. Bunu engellemek imkansız.
Neyse. Bu konuda herhangi bir fikre değer veriyorum.
Yardımcı olur mu? [bunu kontrol edin] (http://stackoverflow.com/questions/5274639/preventing-override-of-individual-methods-in-c-sharp) –
Biliyorsunuz ki (kullanım durumunuzu bir kenara bırakınız) kandırmak için şizofren gibi geliyor Kendisine uyguladığı bir yöntemi çalıştırmak için bir nesne (soyut bir sınıf durumunda bu tür bir yöntemi geçersiz kılmaz, ancak bir yöntemi uygular). Kullanım vakası hakkında biraz zaman düşünürüm ama bu şekilde başarmanın hiçbir yolu olmadığından eminim. – dryman
Bunun yerine bir iş oluşturmayı düşündünüz mü? – Eris