。OWIN 是一种定义 Web 服务器和应用程序组件之间的交互的规范(请参阅 owin.org)。 由于这一规范的目的是发展一个广阔且充满活力的、基于 Microsoft .NET Framework 的 Web 服务器和应用程序组件生态系统,因此它可以将服务器与应用程序之间的交互减少到一小部分类型和单个函数签名,这个函数签名被称为应用程序委托(即 AppFunc):
using AppFunc = Func<IDictionary<string, object>, Task>;
基于 OWIN 的应用程序中的每个组件都向服务器提供应用程序委托。 然后,这些组件链接成一个管道,基于 OWIN 的服务器将会向该管道推送请求。 为了更有效地使用资源,管道中的所有组件都应该是异步的,这体现在返回 Task 对象的应用程序委托中。
对于MVC5中的UserManager在Startup中使用了这样的委托
class Program
{
private class A {
static A()
{
UserManager = () => new A();
}
public void callme()
{
Console.WriteLine("call me");
}
public static Func<A> UserManager{get;set;}
};
static void Main(string[] args)
{
Func<string,string > convert;
convert = s => new string('3',4);
char x = '3';
convert("xxxx");
Func<A> test;
test = () => new A();
A.UserManager().callme();
}
}
静态构造函数里面,对静态的属性,该属性是一个委托函数进行了初始化