【发布时间】:2014-01-25 22:27:06
【问题描述】:
ASP.NET MVC 有很多组件。控制器、动作、静态类、ApiControllers、过滤器、RouteTables、BundleTables、工厂等以及对控制器范围的访问修饰符。
如果我们实例化一个对象或访问其中任何一个中的静态属性,我们如何确定对象、类或成员的范围和生命周期。举个例子:
public static class MyHelper
{
public static object MyProperty { get; set; }
public static Func<object> MyPropertyFactory { get; set; }
static MyHelper()
{
MyProperty = new object();
MyPropertyFactory = () => new object();
}
}
public class MyController : ApiController
{
public object MyAppProperty { get; set; }
public object MyRequestProperty { get; set; }
public MyController()
{
MyAppProperty = MyHelper.MyProperty;
MyRequestProperty = MyHelper.MyPropertyFactory;
}
public object MyAction()
{
var MyActionObject = new object();
return MyActionObject;
}
}
我发现难以解析不同对象和静态类属性的生命周期和范围。这让我陷入了线程和其他问题。
除了分析和经验之外,是否有一个通用的过程来确定这一点?另一个更容易回答的问题是:“以下各项的生命周期和范围是什么?为什么?
- 我的助手
- MyHelper.MyProperty
- MyHelper.MyPropertyFactory
- 我的控制器
- MyController.MyAppProperty
- MyController.MyRequestProperty
- MyController.MyAction.MyActionObject
【问题讨论】:
标签: c# asp.net asp.net-mvc scope lifetime