Swift 3.x
// Преобразование CGPoint в NSValue
let cgPoint = CGPoint(x: 101.4, y: 101.0)
let nsValue = NSValue(cgPoint: cgPoint)
var array = NSArray(object: nsValue)
// Восстановить его снова
var cgPoint : CGPoint!
for i in array {
cgPoint = i as? CGPoint
}
Вы можете создать свои собственные ControllerFactory и DummyTempDataProvider. Примерно так:
public class NoSessionControllerFactory : DefaultControllerFactory
{
protected override IController GetControllerInstance(Type controllerType)
{
var controller = base.GetControllerInstance(controllerType);
((Controller) controller).TempDataProvider = new DummyTempDataProvider();
return controller;
}
}
public class DummyTempDataProvider : ITempDataProvider
{
public IDictionary<string, object> LoadTempData(ControllerContext controllerContext)
{
return new Dictionary<string, object>();
}
public void SaveTempData(ControllerContext controllerContext, IDictionary<string, object> values)
{
}
}
И тогда вам просто нужно будет зарегистрировать фабрику контроллеров при запуске приложения - например, вы можете сделать это в global.asax:
ControllerBuilder.Current.SetControllerFactory(new NoSessionControllerFactory());
Я нашел один способ, который меня не особо интересует:
Создать NoTempDataProvider
using System;
using System.Collections.Generic;
using System.Web.Mvc;
namespace Facebook.Sites.Desktop.Auth.Models
{
public class NoTempDataProvider : ITempDataProvider
{
#region [ ITempDataProvider Members ]
public IDictionary<String, Object> LoadTempData(ControllerContext controllerContext)
{
return new Dictionary<String, Object>();
}
public void SaveTempData(ControllerContext controllerContext, IDictionary<String, Object> values) { }
#endregion
}
}
Перезаписать поставщика вручную в контроллере
public class AuthController : Controller
{
public AuthController()
{
this.TempDataProvider = new NoTempDataProvider();
}
}
Я бы предпочел способ чтобы сделать это полностью через конфигурацию, но пока это работает.
Если вам нужно использовать TempData для простых строк, вы можете использовать CookieTempDataProvider в MvcFutures http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24471 .