我是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