Tag: 属性

使用Reflection确定哪些字段是属性的后备字段

我正在使用reflection来绘制对象。 这些对象在托管代码中,但除了通过reflection之外,我无法看到它们的源代码,底层结构等。 所有这一切的首要目标是一个对象的基本内存映射(类似于SOS.dll DumpObject和!ObjSize命令的function)。 因此,我试图确定哪些成员被“双重计算”为一个字段和一个属性。 例如: public class CalendarEntry { // private property private DateTime date { get; set;} // public field public string day = “DAY”; } 映射时显示: 字段 天 k__BackingField 属性 日期 像这样的一个类: public class CalendarEntry { // private field private DateTime date; // public field public string day = “DAY”; // Public […]

在包含类,使用属性或字段?

在包含它们的类中编写代码时,使用私有字段或属性是一种好习惯吗? 例如,如果我有这个字段/属性对,则此类之外的类必须使用该属性。 课堂内的代码怎么样? 它应该使用私人领域,还是应该通过财产? private string _foo; protected string Foo { get { return this._foo; } } private void SomeMethod() { string dummyVariable = “snuh” + this._foo; // So, this… string dummyVariable = “snuh” + this.Foo; // … or this? } 在这里使用属性的一个优点是,如果getter中有任何逻辑,它仍然会被执行。 我很想知道这里是否有最佳实践政策。

以编程方式将属性添加到方法或参数

我可以使用TypeDescriptor.AddAttributes在运行时向属性添加属性。 如何为方法和参数执行相同操作? (也许是2个单独的问题……)

如果设置了MasterType,如何使用自动生成的Master属性修复名称空间问题

经过几周的这个问题后,我终于决定要求解决以下问题: 在.aspx页面中,您可以设置 这会在.aspx.designer中生成自动生成的属性 public new Mastername Master { get { return ((Masternamee)(base.Master)); } } 工作得很好。 但是,如果我在.aspx文件中进行了更改,则该属性将自动生成,并且如下所示: public new NAMESPACE1.Mastername Master { get { return ((NAMESPACE1.Mastername)(base.Master)); } } 之后将无法进行编译,因为无法在给定的命名空间中解析MasterPage的类。 母版页将NAMESPACE1作为命名空间。 每个内容页面都具有相同的NAMESPACE1。 autogenerated属性尝试在NAMESPACE1.NAMESPACE1中查找将失败的母版页类,因为它不存在。 当然我可以删除第一个NAMESPACE1。 使应用程序再次可编辑,但几乎每次我在.aspx文件中进行更改时,这样做很糟糕。 有没有办法避免这个问题? 我能想到的唯一方法是忽略自动生成的属性,并在每次我想访问母版页时进行显式转换。 编辑:我正在使用Visual Studio 2008 Professional SP1。

用户控件的项目集合选项

如下图所示,对于ListView控件,您可以使用“属性”窗格添加项目。 如何为UserControl启用此类内容? 当我搜索Google时,我没有得到任何东西,但我可能没有使用正确的条款。 有人知道吗? 谢谢

在运行时生成的属性(PropertyGrid.SelectedObject)

好的,这是一个艰难的。 简介:我的想法是将我编写的instanciated QueryBuilder类附加到PropertyGrid。 QueryBuilder类现在包含几个字段,这些字段是硬编码的,如下例所示。 从而允许用户指定应以何种方式在查询中使用哪些字段(排序,分组等)。 在用户为这些属性指定了所有设置后(通过代码或通过PropertyGrid GUI),QueryBuilder能够生成查询。 一切都很好。 伪代码: class QueryBuilder { public QBField name {get; set;} public QBField prename {get; set;} public QBField zip {get; set;} // … public void QueryBuilder() { name = new QBField(); prename = new QBField(); // … } public getQuery() { // logic to build the query } } […]

自定义文件属性

BOUNTY开始了,但我想在C#中做例子 我需要遵循: 在我的申请中,我有文件。 需要一直检查和退出的文件。 当我从我的应用程序中检查一个Document时,我需要将自定义属性添加到文件中,这样我以后可以在我签入文档时识别它。 我尝试使用以下代码使用DSOFile的OleDocumentProperties,但没有成功: // Adding custom properties to file (Parameters: FileName, custom property name, value, debug: true/false DocumentProperties.WriteDocumentProperty(filename, “dms_dossiernummer”, _dossiernummer.ToString(), false); DocumentProperties.WriteDocumentProperty(filename, “dms_zaaknaam”, ReturnZaaknaam(_dossiernummer), false); DocumentProperties.WriteDocumentProperty(filename, “dms_verantw_medew”, ReturnVerantwMedew(_dossiernummer), false); DocumentProperties.WriteDocumentProperty(filename, “dms_document_path”, path, false); DocumentProperties.WriteDocumentProperty(filename, “dms_bestandsnaam”, bestandsNaam, false); DocumentProperties.WriteDocumentProperty(filename, “dms_bestands_id”, bestandId, false); DocumentProperties.WriteDocumentProperty(filename, “dms_is_checkedout”, “true”, false); DocumentProperties.WriteDocumentProperty(filename, “dms_dossier_map_id”, dossierMapId, false); DocumentProperties.WriteDocumentProperty(filename, “dms_bestand_versie_nummer”, Queries.Dms.Selects.GetDocumentVersion( […]

更改inheritance的.net控件上的属性的DefaultValue

在.net中,我有一个inheritance的控件: public CustomComboBox : ComboBox 我只是想将DropDownStyle属性的默认值更改为另一个值(ComboBoxStyle.DropDownList),除了在基类(ComboBoxStyle.DropDown)中指定的默认值。 有人可能认为你可以添加构造函数: public CustomComboBox() { this.DropDownStyle = ComboBoxStyle.DropDownList; } 但是,这种方法会使Visual Studio Designer感到困惑。 在Visual Studio中设计自定义控件时,如果为DropDownStyle选择ComboBoxStyle.DropDown,则认为您选择的属性仍然是默认值(来自基本ComboBox类中的[DevaultValue()]),因此它不会将customComboBox.DropDownStyle = ComboBoxStyle.DropDown行添加到Designer.cs文件中。 令人困惑的是,您发现一旦运行屏幕就不会按预期运行。 那么你不能覆盖DropDownStyle属性,因为它不是虚拟的,但你可以这样做: [DefaultValue(typeof(ComboBoxStyle), “DropDownList”)] public new ComboBoxStyle DropDownStyle { set { base.DropDownStyle = value; } get { return base.DropDownStyle; } } 但是你会因使用“新”声明的细微差别而遇到麻烦。 我已经尝试了它并且似乎没有正常工作,因为视觉工作室设计师也对此方法感到困惑并强制ComboBoxStyle.DropDown(基类的默认值)。 有没有其他方法可以做到这一点? 对于冗长的问题很抱歉,很难详细描述。

属性名称并需要其值

我有一个属性的名称,需要在一个类中找到它的值,获得这个值的最快方法是什么?

在C#中使用Attributes中的变量

我们有一些归属良好的数据库代码,如下所示: [Display(Name = “Phone Number”)] public string Phone { get; set; } 由于它非常通用,我们想再次使用它,但在属性的Name部分使用不同的字符串。 因为它是一个属性,它似乎想要事物是const,所以我们尝试: const string AddressType = “Student “; [Display(Name = AddressType + “Phone Number”)] public string Phone { get; set; } 这似乎没有用,除了有一个const字符串意味着我们不能在任何基类中覆盖它,从而删除了我们原本打算添加的function,并暴露了我的问题: 有没有办法在属性中使用某种变量,以便我们可以inheritance并保留属性装饰?