【发布时间】:2017-04-16 08:59:54
【问题描述】:
我正在学习 Unity,并创建了一个非常简单的 web api 解决方案。
public interface IClass1
{
string GetItem();
}
public class Class1 : IClass1
{
public string GetItem() {
return "hello";
}
}
然后我使用 Unity 做 IoC 工作,例如:
var container = new UnityContainer();
container.RegisterInstance<IClass1>(new Class1());
GlobalConfiguration.Configuration.DependencyResolver = new UnityDependencyResolver(container);
如果我想获得对控制器的依赖,上面的代码可以正常工作
[Dependency]
public IClass1 Class1Instance { get; set; }
[HttpGet]
[Route("Hello")]
public IHttpActionResult PutData()
{
return Ok(Class1Instance.GetItem());
}
但如果我尝试在 Model 类(即 Base 类)上做同样的工作......我无法解决......
public class Base
{
[Dependency]
public IClass1 ClassInstance { get; set; }
public string Name { get; set; }
public string GetVal()
{
return ClassInstance.GetItem(); // ClassInstance is null
}
}
我对此一无所知....也许问题出在 jsonConverter....
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
JObject jobject = new JObject();
object target;
if (jobject.Property("Name") != null)
target = new Base(); // Here is the problem root cause ??
serializer.Populate(jobject.CreateReader(), target);
return target;
}
如果我想解决对 Model 类的依赖,如何解决我的问题??
谢谢!
【问题讨论】:
-
为什么你认为它与jsonconverter有关?
-
我只是猜测,我只是不知道为什么我无法解决对 Model 类的依赖
-
延伸@CodingYoshi的问题,你为什么认为是jsonConverter?您是否遇到与解析 jsonConverter 相关的异常?您能否向我们提供任何可能有助于缩小问题范围的异常详细信息?
-
@ninjacoder no.... jsonConverter 也不例外....我只是随机猜测根本原因....
-
@allencharp 将解析器传递给自定义转换器。将 Base 类注册到要根据请求解析的容器。让解析器解析基类并注入依赖项。
标签: c# asp.net-mvc asp.net-web-api dependency-injection unity-container