Как сказать, имеет ли PropertyInfo конкретный перечислимый тип?

Я недавно нашел превосходная статья , которые объясняют энергозависимый как:

Первый, необходимо понять немного что-то о модели памяти Java. Я изо всех сил пытался за годы объяснить его кратко и хорошо. На сегодняшний день лучший способ, которым я могу думать для описания его, состоит в том, если Вы воображаете его этим путем:

  • Каждый поток в Java происходит в отдельном пространстве памяти (это явно неверно, поэтому терпите меня на этом).

  • необходимо использовать специальные механизмы, чтобы гарантировать, что коммуникация происходит между этими потоками, как Вы были бы в системе передачи сообщений.

  • записи Памяти, которые происходят в одном потоке, могут "просочиться через" и быть замечены другим потоком, но это ни в коем случае не гарантируется. Без явной коммуникации Вы не можете гарантировать, какие записи замечены другими потоками, или даже порядком, в котором они замечены.

Java энергозависимый модификатор является примером специального механизма, чтобы гарантировать, что коммуникация происходит между потоками. Когда один поток пишет в энергозависимую переменную, и другой поток видит, что запись, первый поток говорит, что второе обо всем содержании памяти вплоть до него выполнило запись к той энергозависимой переменной.

Дополнительные ссылки: http://jeremymanson.blogspot.com/2008/11/what-volatile-means-in-java.html http://www.javaperformancetuning.com/news/qotm030.shtml

10
задан bluish 5 July 2011 в 12:35
поделиться

2 ответа

static void DoWork()
{
    var myclass = typeof(MyClass);
    var pi = myclass.GetProperty("Enum");
    var type = pi.PropertyType;

    /* as itowlson points out you could just do ...
        var isMyEnum = type == typeof(MyEnum) 
        ... becasue Enums can not be inherited
    */
    var isMyEnum = type.IsAssignableFrom(typeof(MyEnum)); // true
}
public enum MyEnum { A, B, C, D }
public class MyClass
{
    public MyEnum Enum { get; set; }
}
2
ответ дан 3 December 2019 в 14:25
поделиться

In your above code,

bool isEnum = typeof(Enum).IsAssignableFrom(typeof(genericType));

will get you whether or not the current type is (derived from) an enum or not.

4
ответ дан 3 December 2019 в 14:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: