我有一個模塊,它遍歷一個對象的公共屬性(使用Type.GetProperties()),並對這些屬性執行各種操作。但是,有時某些屬性應該以不同的方式處理,例如忽略。例如,假設我有下面的類:如何引用一個類的屬性(不是對象)?
class TestClass
{
public int Prop1 { get; set; }
public int Prop2 { get; set; }
}
現在,我希望能夠指定每當我模塊收到類型的TestClass的對象,屬性PROP2應該被忽略。理想情況下,我希望能夠這樣說:
ReflectionIterator.AddToIgnoreList(TestClass::Prop2);
但這顯然不起作用。我知道我可以得到一個PropertyInfo對象,如果我首先創建一個類的實例,但創建一個虛擬實例並不恰當。是否有任何其他方式可以得到TestClass :: Prop2的PropertyInfo對象?
(根據記錄,我的當前解決方案使用字符串常量,然後將其與每個屬性相比迭代通過,這樣的:
ReflectionIterator.AddToIgnoreList("NamespaceName.TestClass.Prop2");
,然後遍歷屬性時:
foreach (var propinfo in obj.GetProperties())
{
if (ignoredProperties.Contains(obj.GetType().FullName + "." + propinfo.Name))
// Ignore
// ...
}
但這個解決方案似乎有點凌亂和容易出錯...)
哇,這很快,謝謝! –
順便說一句,任何方式來避免字符串?爲了讓comiler&intellisense能夠幫助我? –
http://stackoverflow.com/a/388841/781792答案。 –