日期:2014-05-17  浏览次数:21773 次

C#Attribute的动态参数
[Something("abc")]
void F
{
  ........
}

意思是Something("abc")中的参数abc是动态的,根据不同情况传人不同的值。
我定义了变量但是编译通不过。有什么方法可以实现呢?

------解决方案--------------------
Attribute不是做这个事的。Attribute属于元数据的一部分,不是让你用来做变量的。
设计本身就有问题。
------解决方案--------------------
不能用变量,加参数,根据不同情况void F(Something)

  
*****************************************************************************
http://feiyun0112.cnblogs.com/
------解决方案--------------------
private string ss=xxxxxxx;

 
void F( string ss)
{
  ........
}

------解决方案--------------------
编译到元数据的Attribute是不能改变的,因此用量来编译是不可以的。

但是,取决于谁来使用Attribute,有些应用(比如PropertyGrid,DataGridView等)可以理解ICustomTypeProvider。这种情况,你就可以通过ICustomTypeDescriptor来提供“动态的Attribute”。
比如通过提供动态的DisplayName来显示不同的属性名。

具体做法较复杂,可以搜索ICustomTypeDescriptor+PropertyGrid。
------解决方案--------------------
也对 变量是不可编译的

------解决方案--------------------
nopCommerce
这个开源项目很多特性是从数据库中读取的~
从而实现多语言~

我也没有详细去挖~ 你可以试试看
最后记得分享一下~