使用katana,为什么Startup类不应该实现相应的接口,例如:
interface IStartup
{
void Configuration(IAppBuilder app);
}
public class MyStartup : IStartup
{
public void Configuration(IAppBuilder app)
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
我认为开发人员可以更直观地了解他们应该为WebApp.Start<T>方法提供什么作为T参数而不是猜测和寻找示例,它应该更明确:
public void Start<T>() where T : IStartup
Run Code Online (Sandbox Code Playgroud)
小智 5
原因是“没有好的理由”。接口的存在是为了将结构和目的传达给实现者(抽象类也这样做,同时提供一些最小的行为)。没有他们,我们只剩下约定俗成。在这种情况下,通过不限制 TStartup,OWIN 允许您使用任何无意义的 Startup 类,并且只能在运行时告诉您它是否可以工作。例如:
WebApp.Start<string>(BaseAddress);
Run Code Online (Sandbox Code Playgroud)
这编译得很好,但在运行时抛出一个 EntryPointNotFoundException(在类“System.String”中找不到“配置”方法)。
不是完全哲学化,但我认为这是当今计算的普遍趋势。REST,没有合同,没有保证,你会发现范式在;肥皂出来了。在某些方面这是一件好事,但我不认为这个例子是其中之一。
| 归档时间: |
|
| 查看次数: |
741 次 |
| 最近记录: |