从C#中的类中删除属性

时间:2015-05-21 08:32:39

标签: c# .net

我有一个班级,并且分配了很少的属性。

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属性。我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:0)

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

如果您只想隐藏某些单元格中的值,可以向属性的set部分添加条件以检查条件并返回null或空字符串。如果条件需要检查外部值,你可以有一个Get方法,它接受适当的值来检查。

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

答案 1 :(得分:0)

第一步是创建一个抽象类,其中包含每个类都有的属性。

例如:

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,但也包含自己定义的属性。

答案 2 :(得分:-1)

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是否显示网格上的属性。如果你告诉我你的代码如何显示属性值,那么我也会帮助你。