我有一个自定义类(调用我的字段),它实现了几个属性。其中一个属性是MaximumLength,它表示该值的最大长度。 Value属性是一个对象,所以我可以设置为字符串,int,double等等。然后我有一个类有多个Field类型的属性。所有的Field属性都在构造函数中初始化,只有Field.Value属性可以写入。如果试图将Field.Value设置为对于字段来说太长的值并实现INotifyPropertyChanged,我想要做的就是抛出一个错误。我的问题是Value属性是泛型Field类的成员,我不知道如何获取该类内的属性名称。如何获取myClass类型的属性的名称?
一个例子:
public class Customer
{
private Field _firstName = new Field(typeof(string), 20);
public Field FirstName
{
get
{
return _firstName;
}
}
}
public class Field
{
private Type _type;
private int _maximumLength;
object _value;
public Field(Type type, int maximumLength)
{
_type = type;
_maximumLength = maximumLength;
}
public Object Value
{
get
{
return _value;
}
set
{
if (value.ToString().Length > _maximumLength)
{
throw(string.Format("{0} cannot exceed {1} in length.", property name, _maximumValue);
}
else
{
_value = value;
OnPropertyChanged(property name);
}
}
}
}
希望这是清楚。
最接近你会得到这是实际属性的上下文访问,该领域本身不会知道它的起源,毕竟,它只是一个实例..上下文的事情 - 即..即时通讯访问此属性以得到这个字段,然后打开反射将是非常严格的 - 像WPF的依赖系统类似的系统证明,在这种情况下,没有比简单地以字符串形式复制名称更好的方法..或者你可以看看面向方面的系统,比如postsharp,它可以让你编译时间重写IL。 – meandmycode 2009-06-16 14:31:12