Ich bin neu bei Ninject, so dass das, was ich versuche, vielleicht nicht einmal möglich ist, aber ich wollte fragen. Ich habe das untenstehende freihändig geschrieben, daher kann es Tippfehler geben. Sagen wir, ich habe eine Schnittstelle:
public interface IPerson
{
string FirstName { get; set; }
string LastName { get; set;}
string GetFullName();
}
Und einen Beton:
public class Person : IPerson
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string GetFullName()
{
return String.Concat(FirstName, " ", LastName);
}
}
Was ich gewohnt bin zu tun, ist etwas wie dies, wenn ich Daten aus Arrays oder Xml abrufen:
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;
}
Ich möchte den Beton nicht auf diese Weise fest an die Schnittstelle koppeln. Ich habe keine Informationen zur Verwendung von Ninject mit LINQ to Objects oder mit Objektinitialisierern finden können. Vielleicht suche ich an den falschen Stellen, aber ich habe jetzt einen Tag lang gesucht, ohne Erfolg.
Ich habe überlegt, den Kernel in eine Singleton-Instanz zu setzen und zu sehen, ob das funktionieren würde, aber ich bin nicht sicher, dass es plus ich gehört habe, dass die Weitergabe Ihres Kernels um eine schlechte Sache ist. Ich versuche gerade, dies in einer Klassenbibliothek zu implementieren. Wenn dies nicht möglich ist, hat jemand irgendwelche Beispiele oder Vorschläge, was die beste Praxis in diesem Fall ist? Vielen Dank im Voraus für die Hilfe.
EDITAR: Aufgrund einiger Antworten sollte ich das klarstellen. Ja, das obige Beispiel scheint kurzlebig zu sein, aber es war nur ein Beispiel für ein Stück, das ich zu tun versuchte. Lassen Sie uns ein größeres Bild geben. Nehmen wir an, dass ich anstelle von XML alle meine Daten über einen Webservice eines Drittanbieters erhalte und ich eine Schnittstelle dafür erstelle. IPerson könnte sowohl für das Person-Objekt als auch für ein User-Objekt verwendet werden. Ich werde dies innerhalb einer separaten Klassenbibliothek tun, weil es portabel sein muss und in anderen Projekten verwendet werden wird, und die Übergabe an eine MVC3 Webanwendung und die Objekte werden auch in Javascript verwendet werden. Ich schätze alle Beiträge so weit.