C#:将不同的类解析为对象并以相同的方式显示属性值

标签 c# parsing reflection gettype getproperties

我在 C# 控制台应用程序中有几个类。

public class Cars:List<Car>
{}

和:

public class Drivers:List<Driver>
{}

目标是始终以相同的方式渲染控制台输出,无论 carsdrivers 是否被解析为渲染方法。所以参数的类型是object。当然,属性可能有不同的名称。

输出应如下所示:

// Cars
Brand HP  Topspeed
VW    100 200
VW    90  150

// Drivers
Name Age Sex 
Pit  18  m
Jane 20  f

所以我需要读取属性名称以使其成为列标题,然后读取每个对象的值。我已经搜索了一段时间,总是出现这样的事情:

public static void RenderOutput(object obj)
{
    foreach (var prop in obj.GetType().GetProperties())
    {
    }
}

虽然在运行时鼠标悬停 obj 可以很好地显示所有所需的对象和属性(品牌、HP、VW、100,...),但我无法设法从 中挤出值>prop item car by cardriver by driver

有什么建议吗? 谢谢 金博2015

最佳答案

我建议转到interface路线,有一个具有方法RenderOutput的接口(interface)。汽车和驾驶员都将实现该接口(interface),并提供自己的方法实现。这将更合适,因为汽车方法不知道驾驶员或签证。在调用方法时,您不传递对象,而是调用实例方法。

关于C#:将不同的类解析为对象并以相同的方式显示属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32547588/

相关文章:

java - 是否可以创建一个空的类加载器?

c# - 单机低延迟、高吞吐量数据传输的最佳并发框架

java - 如何从ajax网页获取所有文本内容

Java 等同于 .NET 的 DateTime.Parse?

java - 需要带引号的字符串(位置 :DOCDECL @1:50 in java. io.StringReader@4327b040) - Android

java - Java 中的 List<Foo> 类是什么?

Java反射: annotation not found even if it's present

c# - 如何在C#中将word doc的字节数组转换为pdf文档的字节数组

C# 将多个表单字段传递给另一个表单

c# - 在源自中心顶点的等边三角形网格中查找顶点