Tag: 属性

用于Property Setter的Visual Studio DebuggerStepThrough

我不想禁用Visual Studio对所有exception的正常处理。 我正在寻找一种方法来忽略特定属性的setter引发的exception。 我知道[DebuggerNonUserCode]和[DebuggerStepThrough] ,但它们似乎不适用于属性,或更具体地说是setter。 这可能吗?

C#通过变量名获取和设置属性

有没有办法做到这一点? 我尝试测试对象的属性是否存在,如果存在,我想设置一个值。 (也许完整的想法很糟糕,如果是真的 – 为什么?) class Info { public string X1{ set; get; } public string X2{ set; get; } public string X3{ set; get; } } Dictionary values = new Dictionary(); values.Add(“X1″,”blah1”); values.Add(“X2″,”blah2”); values.Add(“NotThere”,”blah3″); Info info = new Info(); foreach (var item in values) { string propertyName = item.Key; string value = item.Value; if […]

.NET属性生成“必须声明一个正文,因为它没有标记为抽象或外部”编译错误

我有一个.NET 3.5(目标框架)Web应用程序。 我有一些看起来像这样的代码: public string LogPath { get; private set; } public string ErrorMsg { get; private set; } 它给了我这些行的编译错误: “must declare a body because it is not marked abstract or extern.” 有任何想法吗? 我的理解是这种样式的属性在.NET 3.0中是有效的。 谢谢! 问题原来是我的.sln文件本身。 虽然我在构建选项中更改了目标版本,但在.sln文件中,我发现了这个: TargetFramework = “3.0” 将其更改为“3.5”解决了它。 多谢你们!

物业支持价值范围

这样的事情可能吗? 我假设没有,但它对我来说很好看 : class MyClass { public int Foo { get { return m_foo; } set { // Bounds checking, or other things that prevent the use // of an auto-implemented property m_foo = value; } // Put the backing field actually *in* the scope of the property // so that the rest of the […]

在setter中获取属性名称

我想在ASP.Net应用程序中的回发之间保留一个属性。 目前这样做: public int MyIndex { get { return (int)Session[ToString() + “MyIndex”]; } } 但更喜欢这样的东西: public int MyIndex { get { return (int)Session[ToString() + #code_that_returns_property_name#]; } } Setter省略了,但它只是使用相同的字符串将值推送到Session中。 有没有办法使用reflection,或者更好的解决方案?

为什么C#自动实现的属性是公开的?

在我看到的所有示例中,即使在MSDN文档示例中,C#自动实现的属性也是公开的。 来自C ++背景,我一直被告知,将成员数据设为私有是个好主意,除非有充分的理由不这样做。 为什么以下从未使用过(至少我从未见过它): private Name { get; set; } 我查看了MSDN文档并阅读了几个关于自动实现属性的教程,但似乎没有任何关于它们的优缺点的建议以及何时应该避免它们。 自动实现的属性会破坏程序安全性吗? 是否有应避免的情况? 在哪些情况下他们是理想的选择? 谢谢。

如何避免重复的try catch块

我有几个方法看起来像这样: public void foo() { try { doSomething(); } catch(Exception e) { Log.Error(e); } } 我可以更改代码吗? [LogException()] public void foo() { doSomething(); } 如何实现此自定义属性? 这样做的优点和缺点是什么? —–编辑1 ———— 我可以自己实现它,我的意思是只写一个类,还是我需要使用postharp或其他解决方案?

使用属性调用方法

我有各种各样的方法,在继续自己的实现之前都需要执行相同的function。 现在我可以在每个方法中实现这些函数,但我想知道是否有办法利用attributes来执行此操作? 作为一个非常简单的示例,所有网络呼叫都必须检查网络连接。 public void GetPage(string url) { if(IsNetworkConnected()) … else … } 这可以工作,但我必须为使用网络的每个方法调用IsNetworkConnected方法并单独处理它。 相反,我想这样做 [NetworkCall] public void GetPage(string url) { … } 如果网络不可用,则会调用错误方法,并忽略GetPage ,否则将调用GetPage 。 这听起来非常像Aspect Orientated Programming,但我不想为几个调用实现整个框架。 这更像是一个学习练习而不是实现练习,所以我很好奇这样的事情是如何最好地实现的。

StringLengthAttribute如何工作?

在使用Entity Framework和ASP.NET MVC3validation我的模型时,我无法使用StringLengthAttribute。 我的模型基于entity framework实体,该实体具有部分类,该部分类使用MetadataType属性告诉MVC在搜索元数据时使用哪种类型。 这显示在下面的代码中: [MetadataType(typeof(PartMetadata))] public partial class Part { } class PartMetadata { [DisplayName(“Part number”)] [Required(ErrorMessage=”* Required”)] [StringLength(50, MinimumLength = 3, ErrorMessage = “* Part numbers must be between 3 and 50 character in length.”)] public string Number { get; set; } [StringLength(255, MinimumLength=3, ErrorMessage=”* Part descriptions must be between 3 and […]

搜索实体的所有字段

我正在尝试在客户数据库上实现“多function框”搜索,其中单个查询应尝试匹配客户的任何属性。 这里有一些示例数据来说明我想要实现的目标: FirstName | LastName | PhoneNumber | ZipCode | … ————————————————– Mary | Jane | 12345 | 98765 | … Jane | Fonda | 54321 | 66666 | … Billy | Kid | 23455 | 12345 | … 如果查询是”Jane” ,我希望返回第1行以及第2行。 对12345的查询将产生行#1和#3。 现在,我的代码看起来非常像这样: IEnumerable searchResult = context.Customer.Where( c => c.FirstName == query || c.LastName == […]