J'utilise ASP.NET MVC
avec Ninject
et j'essaye de créer une usine ActionResult
. Disons que je donne les résultats suivants ActionResults
:Comment créer une fabrique qui renvoie des instances différentes avec des paramètres différents?
public class SuccessResult : ActionResult
{
public string SuccessMessage { get; set; }
public SuccessResult(string successMessage) { ... }
}
public class FailResult : ActionResult
{
public int FailCode { get; set; }
public FailResult(int failCode) { ... }
}
public class DataResult : ActionResult
{
public object Data { get; set; }
public string MimeType { get; set; }
public DataResult(object dataToSerialize, string mimeType) { ... }
}
Ainsi, pour chaque ActionResult
, les types de paramètres et le nombre de paramètres seront différents. J'ai créé un ActionResultFactory
qui ressemble à ceci:
public class ActionResultFactory
{
private readonly IKernel _kernel;
public ActionResultFactory(IKernel kernel)
{
_kernel = kernel;
}
public T Create<T>() where T : ActionResult
{
return _kernel.Get<T>(); // how do I pass the parameters?
}
}
Comment pourrais-je écrire l'usine afin qu'elle puisse prendre des paramètres et de les transmettre au constructeur de l'objet? Ou devrais-je le faire à la place:
var result = factory.Create<SuccessResult>();
result.SuccessMessage = "Success!";
var result = factory.Create<FailResult>();
result.FailCode = 404;
var result = factory.Create<DataResult>();
result.Data = file;
result.MimeType = "text/plain";
où chaque propriété est exposée publiquement et je les assigne après la création de l'objet?
Où est votre paramètre? Voulez-vous dire «T»? –