如果我使用VS2015.1创建新的示例项目(WebForms或MVC),则会创建两个文件来配置OWIN:
\ Startup.cs(或.vb)
using Microsoft.Owin;
using Owin;
[assembly: OwinStartupAttribute(typeof(WebApplication6.Startup))]
namespace WebApplication6
{
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
}
}
}
\ App_Start \ Config.Auth.cs(或.vb)
namespace WebApplication6
{
public partial class Startup {
public void ConfigureAuth(IAppBuilder app)
{
// removed for brevity
}
}
}
我看到这两个类都被声明为partial
,但在很多关于如何使用OWIN的在线示例中,这些类不是partial
(请参阅here,{{3} },here和here)。
有人可以解释是否有正确的或最佳方法,以及它是否与使用partial
的应用程序有何不同?< / p>
答案 0 :(得分:1)
我想我找到了答案here,但仍然会欣赏其他人可以在OWIN的背景下添加的内容:
https://stackoverflow.com/a/3601918/792888
部分类的最大用处是使代码生活更轻松 发电机/设计师。部分类允许生成器简单 发出他们需要发出的代码,而不必处理用户 编辑文件。用户同样可以自由地注释该类 新成员通过第二部分课程。这提供了非常好的 分离关注的清洁框架。
所以将partial类简化为一个类。部分声明允许其他具有相同名称的类共存(然后将它们全部编译到一个类中)。
答案 1 :(得分:1)
当且仅当代码生成器每次生成文件时都在生成文件时,接受的答案才为true。使用OWIN的示例不符合条件,因为在选择框架/脚手架时,两个文件仅生成一次。
因此,我能看到启动是作为部分类生成的,唯一的原因是框架开发人员不希望将owin授权的生成(涉及交叉问题)与启动脚手架的生成结合在一起。但是,他们只能成功地从基础启动.cs支架中消除混乱,并且无法将其解耦,因为他们必须将OwinStartupAttribute引入基础启动并调用新的局部类ConfigureAuth中引入的方法。这实际上是如何不使用局部类的完美示例。局部类的定义应该解耦,否则使用局部类所获得的好处将被其创建的间接性所抵消。必须修改基本的局部类定义以添加另一个局部类以添加OWIN授权,这使我很清楚这是一种有缺陷的方法。