我试图在ASP.NET MVC中这样做。我想要一个界面
public interface IMyInterface
{
Task<IReadOnlyCollection<SomeTypeDTO>> aAssembleResponse(dynamic aSomeContext);
}
在我的实施中,我希望得到以下内容:
public class MyInterfaceService
{
.... //unneeded code
public async Task<IReadOnlyCollection<SomeTypeDTO>> aAssembleResponse(
SomeContext aSomeContext)
return whatever
}
我在界面中使用 dynamic 进行初始化,但我期待其他类型(在本例中为 SomeContext )。我的公司在DI方面非常重要,我真的在这里碰壁。我无法新 up SomeContext - 也不会在这里使用构造函数注入方法。如果我把它留作动态它可以正常工作 - 但Autofac会疯狂并且拒绝传递它。
答案 0 :(得分:0)
好的,所以我提出了解决方案,我必须责备我为此而克服的流感。但这是解决这个问题的非常简单的方法。
public interface IMyInterface
{
Task<IReadOnlyCollection<SomeTypeDTO>> aAssembleResponse<T>(T aSomeContext);
}
然后我的实现
public async Task<IReadOnlyCollection<SomeTypeDTO>> aAssembleResponse<T>(T aSomeContext)
{
var _SomeContext = (SomeContext)Convert.ChangeType(aSomeContext, typeof(SomeContext));
return _SomeContext;
}