Как получить свойства "ReadOnly" или "WriteOnly" из класса?
Мне нужно получить список свойств из MyClass, исключая "только для чтения", могу ли я получить их?
public class MyClass
{
public string Name { get; set; }
public int Tracks { get; set; }
public int Count { get; }
public DateTime SomeDate { set; }
}
public class AnotherClass
{
public void Some()
{
MyClass c = new MyClass();
PropertyInfo[] myProperties = c.GetType().
GetProperties(BindingFlags.Public |
BindingFlags.SetProperty |
BindingFlags.Instance);
// what combination of flags should I use to get 'readonly' (or 'writeonly')
// properties?
}
}
И, наконец, coluld, я их сортирую? Я знаю добавление OrderBy<>, но как? Я просто использую расширения. Заранее спасибо.
1 ответ
Решение
Вы не можете использовать BindingFlags для указания свойств только для чтения или только для записи, но вы можете перечислить возвращенные свойства и затем протестировать свойства CanRead и CanWrite в PropertyInfo следующим образом:
PropertyInfo[] myProperties = c.GetType().GetProperties(BindingFlags.Public |
BindingFlags.SetProperty |
BindingFlags.Instance);
foreach (PropertyInfo item in myProperties)
{
if (item.CanRead)
Console.Write("Can read");
if (item.CanWrite)
Console.Write("Can write");
}