Warum kann nicht den C# - Konstruktor infer type?

Warum ist Typ-Inferenz nicht unterstützt für Errichter die Art und Weise ist es für generische Methoden?

public class MyType<T>
{
   private readonly T field;
   public MyType(T value) { field = value; }
}

var obj = new MyType(42); //why can't type inference work out that I want a MyType<int>?

Obwohl man das umgehen könnte mit einer factory-Klasse,

public class MyTypeFactory
{
   public static MyType<T> Create<T>(T value)
   {
      return new MyType<T>(value);
   }
}
var myObj = MyTypeFactory.Create(42);

Gibt es einen praktischen oder philosophischen Grund, warum der Konstruktor kann nicht unterstützt Typ-Inferenz?

Ich hatte die gleiche Frage vor zwei Jahren diese hier: stackoverflow.com/questions/45604, so technisch ist dies ein Duplikat ist. Eric ' s Antwort ist ausgezeichnet und vollständig obwohl.
Wenn Sie versuchen, übergeben Sie mehrere Klassen für eine stark typisierte Ansicht, versuchen Sie diese: return View(Tupel.Erstellen(new Person(), new Adresse()));
Dies ist die richtige Antwort meiner Meinung nach. Da es die einzige ist, die eine pragmatische Lösung. Eine Lösung, die verwendet werden können, im wirklichen Leben. Mit dem factory-pattern. Noch besser, wenn Sie Namen für Ihre Fabrik das gleiche wie Ihre generischen Typ.
Bitte Stimmen Sie für die feature-request! Vorschlag: die Konstruktor-argument Typ-Inferenz

InformationsquelleAutor theburningmonk | 2010-08-25

Schreibe einen Kommentar