c# – 使用FastMember将不同的对象列表转换为DataTable
发布时间:2020-12-15 05:40:52 所属栏目:百科 来源:网络整理
导读:我编写了一个方法,使用NuGet中的 FastMember将通用列表转换为DataTable. 这是我的代码: public DataTable ConvertGenericListToDataTable(ListCustomObject inputList){ var dt = new DataTable(); using (var reader = ObjectReader.Create(inputList)) {
我编写了一个方法,使用NuGet中的
FastMember将通用列表转换为DataTable.
这是我的代码: public DataTable ConvertGenericListToDataTable(List<CustomObject> inputList) { var dt = new DataTable(); using (var reader = ObjectReader.Create(inputList)) { dt.Load(reader); } return dt; } var customObject = new List<CustomObject>(); var dt = ListToDataTable.ConvertGenericListToDataTable(customObject); 哪个工作正常. 我尝试将参数的类型更改为List< object>和列表< dynamic>. 有没有办法可以将对象列表作为参数传递而不定义对象的确切类型? 解决方法
为’CustomObject’创建一个接口,它定义了必须是实现’CustomObject’接口的类的一部分的方法和属性.然后确保’CustomObjectA’和’CustomObjectB’继承’CustomObject’接口,在’CustomObjectA’和’CustomObjectB’中执行所有必需的实现.
要使’ConvertGenericListToDataTable’方法接受任何’CustomObject’,只需让它接受任何实现’CustomObject’接口的类. 这样,您可以确保列表中提供的对象具有所需的方法和属性. 我可能会弄错语法,但是这样的话: interface ICustomObject { public string RequiredProperty { get; } public void RequiredMethod(); } public class CustomObjectA : ICustomObject { public string RequiredProperty { get { return "I'm CustomObjectA"; } } public void RequiredMethod() { // do anything } } public class CustomObjectB : ICustomObject { public string RequiredProperty { get { return "I'm CustomObjectB"; } } public void RequiredMethod() { // do anything } } public void AcceptsAllCustomObjects(List<ICustomObject> Cookies) { Console.WriteLine(Cookies[0].RequiredProperty); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |