从C#中的类中删除属性

本文关键字:删除 属性 | 更新日期: 2023-09-27 17:50:07

我有一个类和分配给它的几个属性。

class MyClass
{
        [Category("Common")]
        [Description("Name")]
        [Browsable(true)]
        public string Name
        {
            get { return name;} 
            set { name = value; }
        }
        [Category("Common")]
        [Description("Contact")]
        [Browsable(true)]
        public string ContactNo
        {
            get { return number;} 
            set { number = value; }
        }
}

在这里,当我实例化这个类时,我想在满足特定条件时删除contactNo属性。我该怎么做?

从C#中的类中删除属性

您的方法取决于是否应为表中的所有行隐藏属性(即,是要隐藏整列还是仅隐藏某些单元格中的值(。

如果只想隐藏某些单元格中的值,可以在属性的集合部分添加条件以检查条件并返回null或空字符串。。如果条件需要检查外部值,则可以使用Get方法来接受要检查的适当值。

在UI级别,隐藏整个列实际上取决于您使用的技术。你在这里没有提到——对于基于浏览器的应用程序来说,JQuery可能是最常见的工具。

第一步将创建一个具有每个类都将具有的属性的抽象类。

例如:

public abstract class ClassRoot {
    public string Name
    {
        get; set;
    }
}

现在,您将创建具有其他属性的派生类,这些属性可能彼此不同。

例如:

public class Class1 : ClassRoot {
    public string ContactNo
    {
        get; set;
    }
}

另一个类可能是这样的:

public class Class2 : ClassRoot {
    public string Address
    {
        get; set;
    }
}

现在,根据您的情况,您可以执行以下操作:

if(....)
{
    Class1 class1 = new Class1();
} else {
    Class2 class2 = new Class2();
}

每个类Class1Class2都具有属性Name,但也包含它们自己定义的属性。

class MyClass
{
    [Category("Common")]
    [Description("Name")]
    [Browsable(true)]
    public string Name
    {
        get { return name;} 
        set { name = value; }
    }
    [Category("Common")]
    [Description("Contact")]
    [Browsable(true)]
    public string ContactNo
    {
        get { return number;} 
        set { number = value; }
    }
    public bool ContactNoVisible
    {
        //Change the condition
        get {return Name != "bttb"; }
    }
}

从现在起,只需检查ContactNoVisible是否可以在网格上显示属性。如果你向我展示你的代码如何显示porperty值,那么我也会为这种方式提供帮助。