C#自定义属性简写

3
假设我有一个带有相当长/复杂参数列表的属性。例如:[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV","|DataDirectory|\\stores.csv","stores#csv", DataAccessMethod.Sequential)] 是否有一种方法可以创建自定义属性作为这个属性的简写,以便于每个方法都不需要键入上述内容,而是只需使用[CustomDataSource]

2
DataSource属性是sealed的,因此您无法从中继承。任何寻找DataSource属性的代码都无法看到您的自定义属性。 - user47589
1
如果问题是长度,则使用“DataSource”的其中一个重载。 - Nkosi
@amy,谢谢。我是通过艰难的方式弄明白了。:) 但是有没有其他的解决方案? - azar g.
1
使用常量代替字符串。根据常量名称,代码可能看起来像[DataSource(Constants.A, Constants.B, Constants.C, Constants.D)]。替换适当的名称。另一种选择是使用类似PostSharp(非免费)的工具。 - user47589
如果重复输入是最大的问题,选择文本并将其拖动到 VS 工具箱。然后,您只需在工具箱列表中双击它,它就会被插入到当前光标位置。或者,你可以编写一个代码片段。 - TnTinMn
1个回答

1
< p > DataSource 属性是密封的,您无法从中继承。

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

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)]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接