gpt4 book ai didi

c# - 简单问题 : Reflections in C#

转载 作者:太空狗 更新时间:2023-10-29 22:33:59 27 4
gpt4 key购买 nike

我正在学习 C# 中的反射概念。我有这样一个类

public class pdfClass
{
public List<AttributeProperties> TopA { get; set; }
public List<AttributeProperties> TopB { get; set; }
public List<AttributeProperties> TopC { get; set; }

}

在另一个类中,我想从列表中提取值。我有一些愚蠢的方法可以做到这一点

public void ExtractValue (pdfClass incomingpdfClass, string type)
{
switch (type)
{
case "TopA":
foreach (var listitem in incomingPdfClass.TopA)
{...}
breaks;
case "TopB":
foreach (var listitem in incomingPdfClass.TopB)
{...}
breaks;
...
}
}

foreach 循环中的操作类似。如何使用反射以清晰的方式做到这一点?

最佳答案

public void ExtractValue(pdfClass incomingpdfClass, string type)
{
PropertyInfo pinfo = typeof(pdfClass).GetProperty("Top" + type);
var yourList = pinfo.GetValue(incomingpdfClass);
foreach (var listitem in yourList)
{ ... }
}

这就是你应该如何使用反射来做到这一点。但是,您应该注意到我的代码与您的不同,因为您编写的代码不清晰也无法编译。作为

public class ExtractValue (pdfClass incomingpdfClass, string type)

是无效的 C# 语法,如果按照我的示例,它应该是一个函数,那么这对您有用

或者如果这应该发生在类的 Constructor 中,它应该如下所示

public class ExtractValue
{
public ExtractValue(pdfClass incomingpdfClass, string type)
{
PropertyInfo pinfo = typeof(pdfClass).GetProperty("Top" + type);
var yourList = pinfo.GetValue(incomingpdfClass);
foreach (var listitem in yourList)
{ ... }
}
}

关于c# - 简单问题 : Reflections in C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7390447/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com