C#自定义属性shorthad

C#自定义属性shorthad,c#,.net,C#,.net,假设我有一个具有相当长/复杂的参数列表的属性。例如: [DataSource(“Microsoft.VisualStudio.TestTools.DataSource.CSV”,“|DataDirectory | \\stores.CSV”,“stores#CSV”,DataAccessMethod.Sequential)] 有没有一种方法可以创建一个自定义属性作为该方法的简写,这样我就可以使用[CustomDataSource]?数据源的属性是密封的,您不能从中继承 最简单的解决方案是使用常量

假设我有一个具有相当长/复杂的参数列表的属性。例如:
[DataSource(“Microsoft.VisualStudio.TestTools.DataSource.CSV”,“|DataDirectory | \\stores.CSV”,“stores#CSV”,DataAccessMethod.Sequential)]


有没有一种方法可以创建一个自定义属性作为该方法的简写,这样我就可以使用
[CustomDataSource]

数据源的
属性是密封的,您不能从中继承

最简单的解决方案是使用常量:

public class Const
{
    public const string Provider = "Microsoft.VisualStudio.TestTools.DataSource.CSV";
    public const string ConnString = "|DataDirectory|\\stores.csv";
    public const string Table = "stores#csv";
    public const string Method = DataAccessMethod.Sequential;
}

[DataSource(Const.Provider, Const.ConnString , Const.Table , Const.Method)]

数据源
属性是
密封的
,因此不能从中继承。任何查找
数据源
属性的代码都不会看到您的自定义属性。如果问题是长度,请使用
数据源
@amy的重载之一,谢谢。我费了好大劲才弄明白。但有其他解决方案吗?使用常量而不是字符串。根据常量名称的不同,代码可能类似于
[DataSource(Constants.A、Constants.B、Constants.C、Constants.D)]
。替换适当的名称。另一种选择是使用PostSharp(非免费)之类的工具。如果重复键入是最大的问题,请选择文本并将其拖动到VS工具箱。然后,您可以在工具箱列表中双击它,它将被插入到当前光标位置。或者,您可以编写一个代码段。