Tag: 属性

属性与方法的区别

例如,当它返回值时哪一个更好用 public int EmployeeAge { get{return intEmployeeAge}; } 和 public int EmployeeAge() { return intEmployeeAge; } 哪一个更好,为什么? 当我们有像上面这样的secnario时,最好的编程习惯是什么?

设置属性时获取StackOverflowException

public List ListarEmpleados() { List returnList = new List(); var lista = from u in DB.tabEmpleado select new { u.idEmpleado, u.idUsuario, u.Nombre, u.Apellidos, u.Telefono1 }; foreach (var e in lista) { Empleado empleado = new Empleado(); empleado.idEmpleado = e.idEmpleado; empleado.idUsuario = e.idUsuario; empleado.nombre = e.Nombre; empleado.apellidos = e.Apellidos; empleado.telefono1 = e.Telefono1; returnList.Add(empleado); } return returnList; […]

Windows用户表单自定义可浏览属性

我想为设计时可浏览的窗体创建一个自定义属性,但我的努力都没有成功。 显而易见的解决方案似乎是将browsable属性设置为true: [Browsable(true), EditorBrowsable(EditorBrowsableState.Always), Description(“Custom Border Colour”), Category(“Custom”)] public Color BorderColour { get { return bCol; } set { bCol = value; } } 但这不起作用。 我已经为自定义控件做了很多次,它就像一个魅力,事实上,我甚至不需要添加属性,因为默认是真的。 这个代码项目文章似乎做了我想要的,这就是我上面所描述的。 MSDN也是一个死胡同,或者我不知道要搜索什么。 我试图将代码添加到Form1.cs和From1.Designer.cs但没有任何作用。 是否有一些我缺少的东西,比如我需要为表格设置的某些属性,或者它是不可能的? 我正在使用Visual Studio Express 2013,如果这会以任何方式影响结果。 编辑:在Reza回答后的尝试:根据Reza的建议,在这个问题中提出了关于这个主题的更详细的问题。

.GetType()。GetProperties()以不同的顺序返回属性

我想查看我们的配置文件,看看它是否与创建新配置文件相同。 此方法称为GetConfig()。 几个小时后,我注意到如果我保存我的配置文件,然后调用GetConfig就行了,但是如果我关闭程序启动它并加载我的配置文件并调用GetConfig()它会以不同的顺序返回我的属性。 下面你可以看到我的意思,属性b是一个类的对象。 有超过3个属性,但我只想给出一个小例子: – – – – – – – – — – – – – – — SAVECONFIG – – – – – – — – GETCONFIG 1 Field: a 1 Field: b 1 Field: c 以及它必须保存的下一个配置对象。 1 Field: a 1 Field: b 1 Field: c 当我在同一个实例上加载配置时 – – – — – […]

如何列出省略属性访问器的接口方法

我想使用reflection来显示接口中的方法列表。 public interface IRoadVehicle { int WheelCount { get; } bool IsEmergency(); } 我使用以下代码: foreach (var m in typeof(IRoadVehicle).GetMethods()) { Console.WriteLine(m.Name); } 但是,如果接口具有属性,我还会列出编译器生成的属性访问器。 我想区分显式定义的方法和属性访问器以省略后者。 //output: //get_WheelCount //IsEmergency //desired output: //IsEmergency 如何过滤掉与属性相关的方法?

将属性添加到另一个程序集的类

是否有可能扩展一个类型,在另一个程序集中定义,在其中一个属性上添加属性? 我在程序集FooBar中有例子: public class Foo { public string Bar { get; set; } } 但是在我的UI程序集中,我想将此类型传递给第三方工具,并且为了使第三方工具正常工作,我需要Bar属性具有特定属性。 此属性在第三方程序集中定义,我不希望在我的FooBar程序集中引用此程序集,因为FooBar包含我的域,这是一个UI工具。

C#动态属性参数

有没有办法做到以下几点? 我看到属性参数必须是一个常量表达式,那么我将如何解决这个问题呢? 如果我不想使用绑定将某些属性加载到datagridview中,那么下一个最佳替代方案是什么? class TestObj { private bool isBrowsable = false; [Browsable(isBrowsable)] public string String1 { get { return “Foo”; } } [Browsable(isBrowsable)] public string String2 { get { return “Baz”; } } }

你能省略没有参数的属性的括号吗?

我注意到当我有[Serializable]而不是[Serializable()] ,代码仍然编译。 有没有规则可以省略括号? 这是一个好习惯吗? 除非我遗漏了什么,否则它对我来说似乎更具可读性。

覆盖属性设置器和getter

有没有办法覆盖具有属性的auto属性的setter和getter? 像这样: [CustomAttribute] public int Value { get; set; } … public class CustomAttibute : Attribute { public override NotExistingPropertySetter(object value) { if (((int)value) < 10 ) { value = 10; } } }

为什么C#collection-properties在调用它们的属性时没有被标记为过时?

我试图将类上的集合属性标记为Obsolete以查找所有出现并在我的警告列表中保留缩小的事项列表,因为我们需要用其他东西替换此集合属性。 编辑 :我已通过Microsoft Connect提交此问题 , 问题#417159 。 编辑16.11.2010 :在编译.NET 3.5和4.0时,validation现在可以在C#4.0编译器中使用。 我在发布的代码中收到4个警告,包括评论“Not OK?”的警告。 然而,令我惊讶的是,该列表只包含了一些内容,远远少于我所知道的内容,并且spotchecks告诉我,由于某种原因,警告列表中的编译器并不总是将该属性的使用标记为过时。 这是一个示例程序,可以在Visual Studio 2008中编译。 请注意标记为#1-#4的末尾附近的四行,其中,我希望所有人都报告所使用的属性已过时,但#3不是,而且似乎如果我继续前进直接对集合属性或方法,属性本身的使用不会被标记为过时。 请注意,#3和#4引用相同的属性,#4标记为使用过时的属性,而#3则不是。 测试表明,如果在表达式中,我访问属性返回的集合的属性或方法,编译器不会抱怨。 这是一个错误,还是我不知道的C#编译器的“隐藏的gem”? using System; using System.Collections.Generic; namespace TestApp { public abstract class BaseClass { [Obsolete] public abstract String Value { get; } [Obsolete] public abstract String[] ValueArray { get; } [Obsolete] public abstract List ValueList { get; […]