Ich habe eine Klasse erstellt, die von List abgeleitet ist. Wenn ich jedoch versuchte, die Klasse in ein anderes List-Objekt umzuwandeln, erhalte ich einen Laufzeitfehler. Mein Code ist ähnlich dem unten geschrieben:Umwandlung einer generischen Liste in eine von einer Liste abgeleitete Klasse
public class CategoryObj
{
public int CategoryID { get; set; }
public string CategoryName { get; set; }
public string Description { get; set; }
}
public class CategoryObjCollection:List<CategoryObj>
{
}
public void Test()
{
CategoryObjCollection cat = new CategoryObjCollection();
using (NWDataContext db = new NWDataContext())
{
var qry = (from c in db.Categories
select new CategoryObj
{
CategoryID = c.CategoryID,
CategoryName = c.CategoryName,
Description = c.Description
}).ToList();
cat = (CategoryObjCollection)qry; //runtime error Unable to cast object of type 'System.Collections.Generic.List`1[WindowsFormsApplication1.CategoryObj]' to type 'WindowsFormsApplication1.CategoryObjCollection'.
}
}
Ich hoffe, dass jemand mir auf diesem helfen kann. Vielen Dank.
Sieht für mich so aus, als würde er versuchen, einen C++ - ähnlichen Typedef-Alias zu erstellen. –
@ Jaroslav: Ziemlich wahrscheinlich - aber das ist nicht, was Vererbung ist, und es ist nicht, wofür es verwendet werden sollte. –
In der Tat. Dafür ist die "using" -Richtlinie gedacht. –