2013-02-03 91 views
3

我想從一個使用反射的程序集中挖掘信息,並且我想知道的一件事情(假設它實際上是一件事要知道)是如果一個字段是不穩定或不穩定。換句話說,如果我有下面的類找出是否反射場是易失性的

public class Test { 
    public volatile int Counter = 0; 
} 

有什麼辦法,我可以(與反思)找出了Test.Counter場的確是volatile嗎?或者是根本不出口?

+0

我相信它可以從'FieldInfo.GetRequiredCustomModifiers檢測()'。 – leppie

回答

5

你可以使用GetRequiredCustomModifiers方法:

var field = typeof(Test).GetField("Counter"); 
bool isVolatile = field 
    .GetRequiredCustomModifiers() 
    .Any(x => x == typeof(IsVolatile)); 
+0

這是否在只反射的上下文btw中工作? – Alxandr

+0

你是什麼意思由*僅反射上下文*?您可以使用反射來確定給定成員是否具有'volatile'修飾符。那不是你要問的問題嗎? –

+0

他問這是否會工作,如果包含相關類型的程序集已加載到僅反射的上下文中,用'Assembly.ReflectionOnlyLoad'說。 – Ani