gpt4 book ai didi

c# - 如何从 FileHelpers 库中获取字段的指定固定长度?

转载 作者:太空宇宙 更新时间:2023-11-03 13:37:41 24 4
gpt4 key购买 nike

我正在使用 FileHelpers 库来编写输出文件。这是示例代码片段:

 public class MyFileLayout
{
[FieldFixedLength(2)]
private string prefix;

[FieldFixedLength(12)]
private string customerName;
}

在我的代码流中,我想知道每个字段在运行时分配的长度,例如:customerName 为 12。

有没有办法从 FileHelpers 库中获取上述值?

最佳答案

我认为您不需要库来读取 FieldAttribute 属性。

        public class MyFileLayout
{
[FieldFixedLength(2)]
public string prefix;

[FieldFixedLength(12)]
public string customerName;
}




Type type = typeof(MyFileLayout);
FieldInfo fieldInfo = type.GetField("prefix");
object[] attributes = fieldInfo.GetCustomAttributes(false);

FieldFixedLengthAttribute attribute = (FieldFixedLengthAttribute)attributes.FirstOrDefault(item => item is FieldFixedLengthAttribute);

if (attribute != null)
{
// read info
}

我为它做了一个方法:

    public bool TryGetFieldLength(Type type, string fieldName, out int length)
{
length = 0;

FieldInfo fieldInfo = type.GetField(fieldName);

if (fieldInfo == null)
return false;

object[] attributes = fieldInfo.GetCustomAttributes(false);

FieldFixedLengthAttribute attribute = (FieldFixedLengthAttribute)attributes.FirstOrDefault(item => item is FieldFixedLengthAttribute);

if (attribute == null)
return false;

length = attribute.Length;
return true;
}

用法:

        int length;
if (TryGetFieldLength(typeof(MyFileLayout), "prefix", out length))
{
Show(length);
}

PS:字段/属性必须是公共(public)的,以便通过反射读取它们的属性。

关于c# - 如何从 FileHelpers 库中获取字段的指定固定长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18203382/

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