我总觉得我缺少可以在.Net中获得的功能,只需将属性应用于类,方法,属性等。智能感知无法显示所有适当的属性,因为它们通常可以应用于各种各样的情景。
以下是我喜欢使用的几个属性:
[DebuggerHidden] - 将此方法放在方法上会阻止Visual Studio调试器插入代码。如果您有一个不断触发并中断调试的事件,这将非常有用。
[EditorBrowsable(EditorBrowsableState.Never)] - 隐藏来自intellisense的方法。我不经常使用它,但它在构建可重用组件时很方便,并且你想要隐藏一些测试或调试方法。
我想看看其他人在使用什么以及人们有什么提示。
答案 0 :(得分:4)
我刚刚找到了这些资源:
// The DebuggerDisplayAttribute can be a sweet shortcut to avoid expanding
// the object to get to the value of a given property when debugging.
[DebuggerDisplay("ProductName = {ProductName},ProductSKU= {ProductSKU}")]
public class Product
{
public string ProductName { get; set; }
public string ProductSKU { get; set; }
}
// This attribute is great to skip through methods or properties
// that only have getters and setters defined.
[DebuggerStepThrough()]
public virtual int AddressId
{
get { return _AddressId;}
set
{
_AddressId = value;
OnPropertyChanged("AddressId");
}
}
// The method below is marked with the ObsoleteAttribute.
// Any code that attempts to call this method will get a warning.
[Obsolete("Do not call this method.")]
private static void SomeDeprecatedMethod() { }
// similar to using a combination of the DebuggerHidden attribute, which hides
// the code from the debugger, and the DebuggerStepThrough attribute, which tells
// the debugger to step through, rather than into, the code it is applied to.
[DebuggerNonUserCode()]
private static void SomeInternalCode() { }
答案 1 :(得分:2)
我们有很多符合CLS的代码而有些代码没有,所以它对我们来说显然是个好处:
[assembly:CLSCompliant(true)]
[CLSCompliant(true)]
这对我们有很大的帮助。
答案 2 :(得分:1)
我通常使用 [可浏览(假)] 和 [可序列化] 。
属性中的[可浏览(错误)] 会从PropertyGrid中隐藏属性。
这不应该是社区维基吗?
答案 3 :(得分:1)
我非常喜欢DebuggerDisplay:
[DebuggerDisplay("Count = {count}")]
class MyHashtable
{
public int count = 4;
}
它将指示VS将鼠标悬停在项目上时显示的内容。
答案 4 :(得分:0)
[DebuggerDisplay(....)]
定义我想在调试器显示中看到的结构或类的哪些字段。
答案 5 :(得分:0)
有时 BindableAttribute 很好地影响组件的绑定行为。 也许有助于启动Reflector并搜索“属性”并稍微浏览一下。这取决于你的意图哪些是有用的。
答案 6 :(得分:0)
我使用了条件属性 在创建演示应用程序期间。我将其作为完整版本并使用这些类型的属性来抑制某些功能。