这里是Unity的注册。
问题:构造函数中要注入的值(在此处硬编码为“XXXXX”)仅在
谢谢,
更新1: 我使用的解决方法是将值“XXXXX”保存在会话中,但不太干净。
public static class UnityConfig
{
public static void RegisterComponents()
{
var container = new UnityContainer();
container.RegisterType<ITestService,TestService>(new InjectionConstructor("XXXXX"));
GlobalConfiguration.Configuration.DependencyResolver = new UnityDependencyResolver(container);
}
}
这里是Web API控制器
[MyFilter]
public class TestController : ApiController
{
private ITestService _testService;
public EmployeeController(ITestService testService)
{
_testService = testService;
}
}
我的测试类
public interface ITestService
{
string GetText();
}
public class TestService : ITestService
{
private string _mystring;
public TestService(string mystring)
{
_mystring = mystring;
}
public string GetText()
{
return _mystring;
}
}
问题:构造函数中要注入的值(在此处硬编码为“XXXXX”)仅在
[MyFilter]
中知道,而不是在注册时或之前知道。是否可以注入来自属性的值?谢谢,
更新1: 我使用的解决方法是将值“XXXXX”保存在会话中,但不太干净。
public class MyFilter: AuthorizationFilterAttribute
{
public override void OnAuthorization(HttpActionContext actionContext)
{
try
{
HttpContext.Current.Session["MyData"] = "XXXXX";
return;
HandleUnauthorized(actionContext);
}
catch (Exception ex)
{
}
}
private void HandleUnauthorized(HttpActionContext actionContext)
{
actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.Unauthorized);
}
}
MyFilter
的代码。在您的过滤器中,值XXXXX
配置在哪里? - NightOwl888ITestService
时,您可以注入mystring
的值。 - BacksITestService
时传递值。它还可以传递自己的类型,这样工厂就可以从该类型上的自定义属性获取值。 - Haukinger