我是 Ninject 的新手,所以我正在尝试的可能甚至不可能,但我想问一下。以下是我随意写的,所以可能有错别字。假设我有一个界面:
public interface IPerson
{
string FirstName { get; set; }
string LastName { get; set;}
string GetFullName();
}
还有一个具体的:
public class Person : IPerson
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string GetFullName()
{
return String.Concat(FirstName, " ", LastName);
}
}
当我从数组或 xml 中检索数据时,我习惯做的是这样的事情:
public IEnumerable<IPerson> GetPeople(string xml)
{
XElement persons = XElement.Parse(xml);
IEnumerable<IPerson> people = (
from person in persons.Descendants("person")
select new Person
{
FirstName = person.Attribute("FName").Value,
LastName = person.Attribute("LName").Value
}).ToList();
return people;
}
我不想以这种方式将混凝土紧密耦合到接口。我无法找到有关将 Ninject 与 LINQ to Objects 或对象初始化程序一起使用的任何信息。我可能在错误的地方寻找,但我一直在寻找一天没有运气。
我正在考虑将内核放入一个单例实例中,看看这是否可行,但我不确定它是否会起作用,而且我听说传递你的内核是一件坏事。我目前正在尝试在类库中实现这一点。如果这是不可能的,是否有人对这种情况下的最佳实践有任何示例或建议?在此先感谢您的帮助。
编辑: 基于一些我觉得我应该澄清的答案。是的,上面的例子看起来很短暂,但这只是我试图做的一个例子。让我们给出一个更大的图景。假设不是 XML,而是通过第 3 方 Web 服务收集我的所有数据并为其创建接口,数据可能是 wsdl 中定义的对象,或者有时可能是 xml 字符串。IPerson 可用于 Person 对象和 User 对象。我将在一个单独的类库中执行此操作,因为它需要可移植并将用于其他项目,并将其交给 MVC3 Web 应用程序,并且对象也将在 javascript 中使用。到目前为止,我感谢所有输入。