我是Ninject的新手,所以我想尝试甚至不可能,但我想问。我自由处理下面的内容,所以可能会出现拼写错误。比方说,我有一个接口:Ninject与对象初始化器和LINQ
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我通过第三方Web服务收集所有数据,并为它创建接口,数据可能是wsdl中定义的对象,或者它有时可能是xml字符串。 IPerson可以用于Person对象和User对象。我将在一个单独的类库中执行此操作,因为它需要可移植并将用于其他项目,并将其交给MVC3 Web应用程序,并且这些对象也将在JavaScript中使用。我很欣赏所有的输入。
关于您的更新,我仍然不认为你需要的接口。在您编辑时描述的情况下,您需要围绕第三方Web服务进行抽象,以了解如何将从服务返回的对象转换为新的Person对象。 'Person'只是一个POCO域对象,通常在整个应用程序中重用。 – Steven 2011-03-07 16:18:26