вы должны иметь общую супертип:
public interface IHaveAnId
{
int id { get;set; }
}
public class Blah : IHaveAnId
{
public int id { get; set; }
public string blahh { get; set; }
}
public class Doh : IHaveAnId
{
public int id {get;set;}
public string dohh { get; set; }
public string mahh { get; set; }
}
, то вы можете сделать:
public List<IHaveAnId> TheList = new List<IHaveAnId>();
и в какой-то метод:
TheList.Add(new Blah{id=1,blahh = "someValue"});
TheList.Add(new Doh{id =2, dohh = "someValue", mahh = "someotherValue"});
перебирать список:
foreach(IHaveAnId item in TheList)
{
Console.WriteLine("TheList contains an item with id {0}", item.id);
//item.id is allowed since you access the property of the class over the interface
}
или перебрать все вздор:
foreach(Blah item in TheList.OfType<Blah>())
{
Console.WriteLine("TheList contains a Blah with id {0} and blahh ='{1}'", item.id, item.blahh);
}
Edit:
эти 2 методы и ИНТ поле, содержащее Автозначение:
private int autoValue = 0;
public void AddBlah(string blahh)
{
TheList.Add(new Blah{id = autovalue++, blahh = blahh});
}
public void AddDoh(string dohh, string mahh)
{
TheList.Add(new Doh{id = autovalue++, dohh = dohh, mahh = mahh});
}
Другой Редактировать
public List<object> Whatever(string prpClass)
{
using (var ctx = new ApplicationDbContext())
{
if (prpClass == "Blah")
{
string queryBlah = @"SELECT ... ";
var result = ctx.Database.SqlQuery<Blah>(queryBlah).ToList();
return result.Cast<object>().ToList();
}
if (prpClass == "Doh")
{
string queryDoh = @"SELECT ... ";
var result = ctx.Database.SqlQuery<Doh>(queryDoh).ToList();
return result.Cast<object>.ToList();
}
return null;
}
}
в представлении вы тогда должны решить, какой тип он. В asp.net MVC вы можете использовать шаблон отображения и использовать отражение, чтобы получить хороший дизайн. Но тогда я до сих пор не знаю, какую технологию вы используете.
Еще один Редактировать
TestClass:
public class SomeClass
{
public string Property { get; set; }
}
Repository:
public static class Repository
{
public static List<object> Whatever(string prpClass)
{
switch (prpClass)
{
case "SomeClass":
return new List<SomeClass>()
{
new SomeClass{Property = "somestring"},
new SomeClass{Property = "someOtherString"}
}.Cast<object>().ToList();
default:
return null;
}
}
}
И действие контроллера в MVC:
public JsonResult Test(string className)
{
return Json(Repository.Whatever("SomeClass"),JsonRequestBehavior.AllowGet);
}
тогда я назвал его: http://localhost:56619/Home/Test?className=SomeClass
И получил результат:
[{"Property":"somestring"},{"Property":"someOtherString"}]
Они должны иметь общего предка, как базовый класс или интерфейс. – ja72
Обновлен мой ответ ... то, что вы пытаетесь сделать, невозможно досадно. –
@Tomo угловой js работает с json справа? но какие серверные технологии вы используете? –