Tag: 属性

使用标记接口而不是属性的令人信服的理由

在Stack Overflow之前我们已经讨论过 ,我们应该更喜欢属性到标记接口 (没有任何成员的接口)。 MSDN上的界面devise文章也强调了这个build议: 避免使用标记界面(没有成员的界面)。 自定义属性提供了一种标记types的方法。 有关自定义属性的更多信息,请参阅编写自定义属性。 自定义属性是首选的时候,你可以推迟检查的属性,直到代码执行。 如果你的情况需要编译时间检查,你不能遵守这个准则。 甚至有一个FxCop规则来执行这个build议: 避免空接口 接口定义提供行为或使用合同的成员。 接口所描述的function可以被任何types所采用,而不pipetypes在inheritance层次中出现的位置。 一个types通过为接口的成员提供实现来实现一个接口。 一个空的接口没有定义任何成员,因此,没有定义一个可以实现的合同。 如果您的devise包含types预期要实现的空接口,那么您可能使用接口作为标记,或者识别一组types。 如果此标识在运行时发生,则正确的方法是使用自定义属性。 使用属性的存在或不存在或属性的属性来标识目标types。 如果标识必须在编译时发生,那么使用空的接口是可以接受的。 本文只说明一个原因,您可能会忽略该警告:当您需要types的编译时间标识。 (这与界面devise文章一致)。 如果在编译时使用接口来标识一组types,那么从这个规则中排除警告是安全的。 下面是实际的问题:微软在框架类库的devise(至less在几个情况下)不符合他们自己的build议: IRequiresSessionState接口和IReadOnlySessionState接口 。 ASP.NET框架使用这些接口来检查是否应该为特定处理程序启用会话状态。 显然,它不用于types的编译时识别。 为什么他们不这样做? 我可以想到两个潜在的原因: 微优化:检查一个对象是否实现了一个接口( obj is IReadOnlySessionState )比使用reflection检查一个属性( type.IsDefined(typeof(SessionStateAttribute), true) )要快。 大部分时间差别可以忽略不计,但对于ASP.NET运行时中性能至关重要的代码path来说,这可能是非常重要的。 但是,他们可能使用的解决方法就像caching每个处理程序types的结果。 有趣的是,ASMX Web服务(具有类似的性能特征)实际上使用WebMethod属性的EnableSession属性来达到此目的。 实现接口的可能性比用第三方.NET语言装饰属性的types更有可能被支持。 由于ASP.NET被devise为与语言无关,并且ASP.NET根据<%@ Page %> EnableSessionState <%@ Page %>指令 ,使用接口而不是属性可能更有意义。 什么是使用标记接口而不是属性的说服力的原因? 这只是一个(过早的)优化或框架devise中的一个小错误? (他们认为reflection是“红眼睛的大怪物”吗?)思考?

使用jQuery更改CSS类属性

有没有办法改变一个CSS类的属性,而不是元素属性,使用jQuery? 这是一个实际的例子: 我有一个与red类的div .red {background: red;} 我想改变类的red背景属性,而不是red背景分配类的元素。 如果我使用jQuery .css()方法 : $('.red').css('background','green'); 它会影响到现在有red的元素。 到这里一切都很好。 但是,如果我做了一个Ajax调用,并插入更多的red类的div,那些将不会有一个绿色的背景,他们将有最初的red背景。 我可以再次调用jQuery .css()方法 。 但是我想知道是否有办法改变class级本身。 请考虑这只是一个基本的例子。

如何阅读程序集属性

在我的程序中,如何读取AssemblyInfo.cs中设置的属性: [assembly: AssemblyTitle("My Product")] [assembly: AssemblyDescription("…")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("Radeldudel inc.")] [assembly: AssemblyProduct("My Product")] [assembly: AssemblyCopyright("Copyright @ me 2008")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] 我想显示一些这些值给我的程序的用户,所以我想知道如何加载他们从主程序和我使用的Komponent程序集。

自定义assembly属性

我想知道我是否可以定义自定义程序集属性。 现有属性按以下方式定义: [assembly: AssemblyTitle("MyApplication")] [assembly: AssemblyDescription("This application is a sample application.")] [assembly: AssemblyCopyright("Copyright © MyCompany 2009")] 有什么办法可以做到以下几点: [assembly: MyCustomAssemblyAttribute("Hello World! This is a custom attribute.")]

为自定义Maven 2属性设置默认值

我有一个Maven pom.xml,里面有一个我希望能够在命令行上控制的插件。 一切工作,否则罚款,除了searchnetworking之后,我无法弄清楚如何设置我的控制属性的默认值: <plugin> … <configuration> <param>${myProperty}</param> </configuration> … </plugin> 所以如果我运行Maven mvn -DmyProperty=something … 一切都很好,但我想有一个具体的值分配给myProperty也没有-DmyProperty=…开关。 如何才能做到这一点?

火狐4:有没有办法删除所需的formsinput的红色边框?

当需要在表单字段中定义时,Firefox 4会自动向该元素显示红色边框,甚至在用户点击提交button之前。 <input type="text" name="example" value="This is an example" required /> 我觉得这对于用户来说是一件令人不安的事情,因为他们一开始并没有犯错误。 我想在初始状态下隐藏红色的边框,但是当用户点击发送button时,如果缺less标记为必填的字段,则会显示该边框。 我看着:required和:invalid新的伪select器:invalid ,但更改是在validation之前和之后 。 (来自Firefox 4需要的inputforms红色边框/大纲 ) 有没有办法在用户提交表单之前禁用红色边框,并显示是否有一些缺失的字段?

哪一个是检查属性存在的最好方法?

哪一个更好的方法来检查属性的存在? Jarret Hardie提供了这个答案: if hasattr(a, 'property'): a.property 我看到这也可以这样做: if 'property' in a.__dict__: a.property 一种方法通常比其他方法更有用吗?

从dynamic创build的选项中设置选项“select”属性

我有一个dynamic创build的select使用JavaScript函数选项。 select对象是 <select name="country" id="country"> </select> 当执行js函数时,“国家”对象是 <select name="country" id="country"> <option value="AF">Afghanistan</option> <option value="AL">Albania</option> … <option value="ID">Indonesia</option> … <option value="ZW">Zimbabwe</option> </select> 并显示“印度尼西亚”作为默认select的选项。 注意:该选项中没有selected="selected"属性。 那么我需要将selected="selected"属性设置为“Indonesia”,我使用它 var country = document.getElementById("country"); country.options[country.options.selectedIndex].setAttribute("selected", "selected"); 使用萤火虫,我可以看到“印度尼西亚”选项是这样的 <option value="ID" selected="selected">Indonesia</option> 但在IE中失败(在IE 8中testing)。 然后我尝试使用jQuery $( function() { $("#country option:selected").attr("selected", "selected"); }); 它在FFX和IE中都失败了。 我需要“印度尼西亚”选项selected="selected"属性,所以当我点击重置button,它会再次select“印度尼西亚”。 改变jsfunctiondynamic地创build“国家”选项不是一个选项。 该解决scheme必须同时在FFX和IE中工作。 谢谢

当一个属性的值改变时引发一个事件?

有一个属性,它被命名为ImageFullPath1 public string ImageFullPath1 {get; set; } 每当它的价值发生变化,我都会开火。 我知道改变INotifyPropertyChanged ,但我想要做的事情。

我可以在部分类中定义属性,然后用另一个部分类中的属性标记它们吗?

有没有办法,我可以有一个生成的代码文件,如下所示: public partial class A { public string a {get; set;} } 然后在另一个文件中: public partial class A { [Attribute("etc")] public string a {get; set;} } 这样我可以从数据库生成一个类,然后使用一个非生成的文件来标记它?