¿Cómo manejo las clases con métodos estáticos con Ninject?¿Cómo manejo las clases con métodos estáticos con Ninject?
Es decir, en C# uno no puede tener métodos estáticos en una interfaz, y Ninject funciona en base al uso de interfaces.
Mi caso de uso es una clase en la que me gustaría que tuviera un método estático para crear una instancia despoblada de .
EDIT 1
Sólo para añadir un ejemplo de la clase TopologyImp, en los GetRootNodes método(), ¿cómo iba a crear algunas clases INODE para volver? ¿Construiría estos con práctica de código normal o de alguna manera usaría Ninject? Pero si uso el contenedor para crear, ¿entonces no le he dado a esta biblioteca el conocimiento del COI?
public interface ITopology
{
List<INode> GetRootNodes();
}
public class TopologyImp : ITopology
{
public List<INode> GetRootNodes()
{
List<INode> result = new List<INode>();
// Need code here to create some instances, but how to without knowledge of the container?
// e.g. want to create a few INode instances and add them to the list and then return the list
}
}
public interface INode
{
// Parameters
long Id { get; set; }
string Name { get; set; }
}
class NodeImp : INode
{
public long Id
{
get { throw new NotImplementedException(); }
set { throw new NotImplementedException(); }
}
public string Name
{
get { throw new NotImplementedException(); }
set { throw new NotImplementedException(); }
}
}
// Just background to highlight the fact I'm using Ninject fine to inject ITopology
public partial class Form1 : Form
{
private ITopology _top;
public Form1()
{
IKernel kernal = new StandardKernel(new TopologyModule());
_top = kernal.Get<ITopology>();
InitializeComponent();
}
}
Hola Ruben: He agregado algunas aclaraciones a la pregunta. ¿Cómo crearías las instancias de INode en este caso? (es decir.ver este punto en el código que he comentado) - gracias – Greg
@Greg: ¿Esto está bien? –
Gracias Ruben- Tendré que dejar que esto se traduzca. Estoy reflexionando acerca de los beneficios tangibles que este enfoque realmente tendría sobre crear las clases normalmente en el lugar que indiqué en mi código. ¿Ves uno? Al igual que realmente rompería el concepto de COI al observar en todas las demás áreas de su código, ¿siguió el enfoque de Ninject? – Greg