我有以下模板类和接口
public class UseCaseResponse<T> where T : class
{
//......
}
public interface IPresenter<T> where T : UseCaseResponse<T>, new()
{
void Handle(T response);
}
public class JsonPresenter<T> : IPresenter<T> where T : UseCaseResponse<T>, new()
{
public void Handle(T response)
{
throw new NotImplementedException();
}
}
现在我的问题是如何创建不同的 JSonPresenter 对象 就像我可以做到的一样,
ServiceCollection s = new ServiceCollection();
s.AddScoped<UseCaseResponse<Person>, UseCaseResponse<Person>>();
var provider = s.BuildServiceProvider();
var p = (UseCaseResponse<Person>)p.GetService(typeof(UseCaseResponse<Person>));
那行得通,但是如何获得JsonPresenter<UseCaseResponse<Person>>
对象?
答案 0 :(得分:0)
对于泛型,您只需要在创建类型的实例时指定具体的类型参数即可。对于您想要的JsonPresenter<UseCaseResponse<Person>>
,它应该是:
var presenter = new JsonPresenter<UseCaseResponse<Person>>();
现在您可以这样做:
//p is the UseCaseResponse instance from your second code sample
presenter.Handle(p);