2014-10-14 15 views
5

, neden Başlangıç ​​ sınıf gibi, ilgili arayüz uygulamaması gerektiği yapar örneğin:Gerekli Başlangıç ​​sınıfının, IStartup gibi uygun bir arabirimi neden uygulaması gerekmez? katanayı kullanma

interface IStartup 
{ 
    void Configuration(IAppBuilder app); 
} 

public class MyStartup : IStartup 
{ 
    public void Configuration(IAppBuilder app) 
    { 
     ... 
    } 
} 

Ben geliştiriciler vermelidir anlamak için çok daha sezgisel olabileceğini düşünüyorum yerine tahmin ve örnekler arayan T argüman olarak WebApp.Start<T> yöntemine sahip, daha açık olmalıdır:

public void Start<T>() where T : IStartup 
+0

Birden fazla Başlangıç ​​sınıfı var mı? Yine de aynı yöntemi uyguladığınız yöntem değil mi? –

+0

@RobertHarvey evet, örneğin, birimin test edilmesi ve bazı sahte sunucuya ihtiyaç duyduğumda, 1'den fazla Başlangıç ​​sınıfı olabilir. –

+0

@RobertHarvey Aşağıdaki kod "WebApp.Start " ile karşılaşırsanız, dokümanlar ve örneklere bakmadan gereken "T" nin nasıl olması gerektiğini nasıl anlayabilirsiniz? –

cevap

4

nedeni "HAYIR İYİ neden yok" dir. Bir uygulayıcının yapısını ve amacını iletmek için arayüzler vardır (soyut sınıflar bunu da yapar, bazı minimal davranışlar sağlar). Onlar olmasaydı, sözleşmeyle kaldık. Bu durumda, TStartup'ı kısıtlamadan OWIN, herhangi bir saçma Startup sınıfını kullanmanıza izin verir ve yalnızca çalışacaksa çalışma zamanında size söyler. Örneğin:

WebApp.Start<string>(BaseAddress); 

Bu iyi derler, ancak çalışma zamanında bir EntryPointNotFoundException atar (Resim 'Configuration' yöntemi sınıf 'System.string bulunmuştur).

Tüm felsefi noktaları elde etmek için değil, ancak bunu bugün hesaplamada genel bir eğilim olarak görüyorum. REST, sözleşmesi yok, garanti yok, siz bunu anlamaya çalışın paradigma; SOAP çıktı. Bazı yönlerden bu iyi bir şeydir, ama bence bu örnek onlardan biri.

+0

Cevap için teşekkürler ve geç cevap için özür dilerim. –

+0

Bu, varolan kodu bozmadan gelecekte OWIN'in genişletilmesine izin veriyor. Bunu arayüzlerle yapmanın tek yolu, onları da artıları ve eksileri olan versiyonları oluşturmaktır. – bikeman868

İlgili konular