gpt4 book ai didi

c# - 我可以在属性中包含属性吗?

转载 作者:行者123 更新时间:2023-12-02 05:34:18 25 4
gpt4 key购买 nike

我正在开发一个应用程序,它将从我的数据库中读取数据,进行一些处理,然后将结果导出到一个固定宽度的平面文件。

我从 this 中的代码开始问题,并以此为基础。

现在导出的文件主要有三种数据类型,String、Num、Decimal(x,y);其中 x 是小数点左边的数字,y 是小数点右边的数字。

我的自定义属性是这样的:

public class FixedWidthColumn : Attribute
{
public int Position { get; set; }
public int Length { get; set; }

public FixedWidthColumn(int position, int length)
{
Position = position;
Length = length;
}
}

是否可以创建一个自定义属性(或其他一些结构),我可以使用它来构建这样的属性:

[FixedWidthColumn(3,2, String)]
public string CompanyId

[FixedWidthColumn(6, 20, Num)]
public int Sku { get; set; }

[FixedWidthColumn(5, 10, Decimal(6,4)]
public decimal Price { get; set; }

最佳答案

您可以扩展 FixedWidthColumnAttribute 以携带参数类型属性。

       public enum FixedWidthColumnType 
{
String,
Num,
Decimal
}

[AttributeUsage(AttributeTargets.Property)]
public class FixedWidthColumnAttribute : Attribute
{
public int Position { get; private set; }
public int Length { get; private set; }
public int Digits {get;set;}
public int FractionalDigits {get;set}

public FixedWidthColumnType Type {get; private set;}
public FixedWidthColumn(int position, int length,
FixedWidthColumnType type)

{ this.Position = position;
this.Length = length;
this.Type = type;
}


}

用法:

         [FixedWidthColumn(4, 10, FixedWidthColumnType.String)]

[FixedWidthColumn(5, 6, FixedWidthColumnType.Decimal, Digits = 3, FractionalDigits = 4)]

关于c# - 我可以在属性中包含属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11905112/

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