c#中相同类的不同天正对象特性不显示可以拥有不同特性吗

c#中相同类的不同对象可以拥有不同特性吗_百度知道
c#中相同类的不同对象可以拥有不同特性吗
比如class TestClass{
[browable(true)]
public string Name{}}实例化两个对象TestClass a=new TestClass ();TestClass b=new TestClass ();怎么能让a和b两个对象的name属性的browable特性值不同呢?
我有更好的答案
这个做不到的,这块东西在net里叫“自定义特性”属于设计期支持,也就是他是在编译前就定好了,在运行期是没办法更改的。即时是使用反射,微软也只提供GetCustomAttributes去获取相关信息,而没有提供回写的过程。 额补充一下:ls提到Emit的确可以实现,Emit相当与动态编译,但是操作也是相当的麻烦
采纳率:44%
特性所提供的信息也称为元数据,而元数据是记录在程序集中的,因此,你无法通过一般的方式在运行时修改程序集中的数据,即,特性不可改。如果你一定要改,你可以参考System.Reflection.Emit命名空间中的类来进行修改,该命名空间中的类提供在运行时修改程序集的功能,但操作一定要小心。
那就再类里定义两个不同的browable特性值,分别给两个对象调用
我是想加载对象是动态确定哪些属性需要显示.就是TestClass有10个属性,对象a和对象b需要显示的属性不一样.主要是用propertygrid显示用的.
利用构造函数啊
把特性直接加在b.name 和a.name上呢
其他2条回答
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)C#特性之数据类型这篇文章主要通过演示类在不同发展中的不通过定义方法,来向读者表述它们之间的区别和联系。在C#1时代,我们喜欢这样定义类:public class oduct
private string _
public string Name {
get { return _ }
private decimal _
public decimal Price
get { return _ }
public Product(string name, decimal price)
this._name =
this._price =
public static ArrayList GetArrayList()
ArrayList list = new ArrayList();
list.Add(new Product("WindowsPhone", 10m));
list.Add(new Product("Apple", 10m));
list.Add(new Product("Android", 10m));
public override string ToString()
return String.Format("{0}--{1}", _name, _price);
}局限性:1、ArrayList没有提供与其内部内容有关的编译时信息,如果不慎写错,编译器也不会出现任何提示;2、代码中为属性提供了公共的取值方法,这意味着如果添加对应的赋值方法,那么赋值方法必须是共有的;3、用于创建属性和变量的代码很复杂,这违背了我们进行封装的原本意愿;在C#2时代,我们喜欢这样定义类:public class Product
private string _
public string Name {
get { return _ }
private set { _name = }
private decimal _
public decimal Price
get { return _ }
private set { _price = }
public Product(string name, decimal price)
public static List&Product& GetArrayList()
List&Product& list = new List&Product&();
list.Add(new Product("WindowsPhone", 10m));
list.Add(new Product("Apple", 10m));
list.Add(new Product("Android", 10m));
public override string ToString()
return String.Format("{0}--{1}", Name, Price);
}现在,属性拥有了私有的赋值方法,并且它能非常聪明的&猜出&List&Product&是告知编译器列表中只能包含Product。试图将一个不同类型添加到列表中会造成编译时错误,并且当你从列表中获取结果时,也并不需要转化结果的类型;有效的解决了C#1中的前两个问题;在C#3时代,我们喜欢这样定义类:public class Product
public string Name
public decimal Price
public Product(){}
public static List&Product& GetArrayList()
return new List&Product&()
new Product {Name = "WindowsPhone", Price = 10m},
new Product {Name = "Apple", Price = 10m},
new Product {Name = "Android", Price = 10m}
public override string ToString()
return String.Format("{0}--{1}", Name, Price);
}发展到这个阶段,我们可以很明显的发现,不再有任何代码(或者可见的变量)与属性关联,而且硬编码的列表是以一种全然不同的方式构建,这样一来,我们实际上是完全可以删除就有的构造函数,但是外部代码就不能再创建其他的产品实例。自动熟悉大大简化了操作;在C#4时代,我们喜欢这样定义类:public class Product
private readonly string _
public string Name
get { return _ }
private readonly decimal _
public decimal Price
get { return _ }
public Product(string name,decimal price)
this._name =
this._price =
public static List&Product& GetArrayList()
return new List&Product&()
new Product(name: "WindowsPhone", price: 10m),
new Product(name: "Apple", price: 10m),
new Product(name: "Android", price: 10m)
public override string ToString()
return String.Format("{0}--{1}", Name, Price);
}在这个特定的示例中,C#4的特性的好处还不是很明显,但当方法或构造函数包含多个参数时,它可以是代码的含义更加清-特别是当参数类型相同,或某个参数为null时。当然,你可以选择什么时候使用该特性,只在是代码更好的理解时才指定参数的名称;总结:C#1(只读属性,弱类型集合)------》C#2(私有属性赋值方法,强类型集合)------》C#3(自动实现的熟悉,增强的集合和对象初始化)------》C#4(用命名实参更清晰的调用构造函数和方法)注:由于C#5在这方面的特性表现的没有太大变化,所以就不再表述。如果你觉得这篇文章对你有所帮助,欢迎转载,但请注明出处!
优质网站模板c#中相同类的不同对象可以拥有不同特性吗?该怎么处理_读书人
c#中相同类的不同对象可以拥有不同特性吗?该怎么处理
&来源:读书人网&【读书人网(Reader8.cn):综合教育门户网站】
c#中相同类的不同对象可以拥有不同特性吗?比如class TestClass{[browable(true)]public string Name{gets
c#中相同类的不同对象可以拥有不同特性吗?比如class TestClass{ & [browable(true)] & public string Name{}}实例化两个对象TestClass a=new TestClass ();TestClass b=new TestClass ();怎么能让a和b两个对象的name属性的browable特性值不同呢?[解决办法]如果是写到程序元数据(MetaData)的特性,本身不能改变。不过,某些应用,比如PropertyGrid,GridDataView等认识ICustomTypeDescriptor,并接受ICustomTypeDescriptor提供有关的类型信息,具体使用可以搜索(ICustomTypeDescriptor+PropertyGrid)。对于PropertyGrid,下贴3楼则用另外一种简单的方式,有示例代码:http://topic.csdn.net/u//dfeb55a4-db4f-444b-a607-d7bd6eb5ff7f.html?seed=}

我要回帖

更多关于 面对对象的三大特性 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信