我有一個自定義類(調用我的字段),它實現了幾個屬性。其中一個屬性是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