Làm cách nào để xử lý các lớp có phương thức tĩnh bằng Ninject?Làm cách nào để xử lý các lớp với các phương thức tĩnh bằng Ninject?
Tức là, trong C# người ta không thể có phương pháp tĩnh trong giao diện và Ninject hoạt động trên cơ sở sử dụng giao diện?
Trường hợp sử dụng của tôi là một lớp học mà tôi muốn nó có phương pháp tĩnh để tạo ra một ví dụ chưa được tự động hóa của chính mình .
EDIT 1
Chỉ cần thêm một ví dụ trong lớp TopologyImp, trong phương pháp() GetRootNodes, thế nào tôi sẽ tạo ra một số lớp inode để trở lại? Tôi sẽ xây dựng chúng với thực hành mã bình thường hay tôi bằng cách nào đó sẽ sử dụng Ninject? Nhưng nếu tôi sử dụng các container để tạo ra sau đó tôi đã không cho kiến thức thư viện này của IOC sau đó?
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();
}
}
Xin chào Ruben - Tôi đã thêm một số làm rõ cho câu hỏi. Làm thế nào bạn sẽ tạo ra các trường hợp INode mình trong trường hợp này? (I E.xem điểm này trong mã mà tôi đã nhận xét) - cảm ơn – Greg
@Greg: Điều này có tốt không? –
Cảm ơn Ruben- Tôi sẽ phải để nó chìm vào. Tôi đang suy nghĩ về những lợi ích hữu hình mà cách tiếp cận này thực sự sẽ chỉ tạo ra các lớp bình thường tại chỗ tôi đã chỉ ra trong mã của mình? Bạn có thấy không? Giống như nó sẽ thực sự phá vỡ khái niệm IOC lưu ý trong tất cả các lĩnh vực khác của mã của bạn, bạn đã làm theo các phương pháp tiếp cận Ninject? – Greg