sha*_*e87 5 c# dynamic generic-list
我没有显式转换时将列表对象转换回原始类型时遇到问题.我的目的是概括方法,以便我可以传递不同的数据库类型,如人或公司.通过反射获取值没有问题,但我需要将实际列表转换回原始类型,List<typeT>
而不是List<object>
我传递给它的方法.我知道以下方法:
SomeList.ConvertAll(x => (typeT)x);
SomeList.Cast<typeT>().ToList();
Run Code Online (Sandbox Code Playgroud)
但是对于这些方法,我将必须显式地转换typeT.我尝试过以下方法:
formatted1.ConvertAll(x => Convert.ChangeType(x, typeT));
Run Code Online (Sandbox Code Playgroud)
和
List<dynamic> newList = new List<dynamic>();
foreach (var p in SomeList)
{
newList.Add(Convert.ChangeType(p, typeT);
}
Run Code Online (Sandbox Code Playgroud)
到目前为止没有成功.也许我应该有另一个游戏计划来完全概括这些方法.现在我正在通过如下列表:
public string returnJson(List<object> entity, string someString)
{
}
Run Code Online (Sandbox Code Playgroud)
似乎制作returnJson
通用会解决大多数这些问题:
public string returnJson<T>(List<T> entity, string someString)
{
}
Run Code Online (Sandbox Code Playgroud)
现在returnJson
可以使用,如:
returnJson<Company>(listOfCompanies, "someString");
Run Code Online (Sandbox Code Playgroud)
和
returnJson<Person>(listOfPersons, "someOtherString");
Run Code Online (Sandbox Code Playgroud)
您仍然可以反映对象,但列表始终是编译时所需类型的列表.不需要铸造.