С#,.NET 3.5
Я пытаюсь получить все свойства объекта, у которого есть BOTH getter и setter для экземпляра. Код, который, как я думал, должен работать,
PropertyInfo[] infos = source.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.SetProperty | BindingFlags.GetProperty);
Однако результаты включают свойство, которое не имеет сеттера. Чтобы дать вам простую идею моей структуры наследования, которая может повлиять на это (хотя я не знаю, как это сделать):
public interface IModel
{
string Name { get; }
}
public class BaseModel<TType> : IModel
{
public virtual string Name { get { return "Foo"; } }
public void ReflectionCopyTo(TType target)
{
PropertyInfo[] infos = this.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.SetProperty | BindingFlags.GetProperty);
foreach (PropertyInfo info in infos)
info.SetValue(target, info.GetValue(this, null), null);
}
}
public class Child : BaseModel<Child>
{
// I do nothing to override the Name property here
}
При работе с именем:
я получаю следующую ошибку:System.ArgumentException: Property set method not found.
EDIT: Я хотел бы знать, почему это не работает, а также то, что я должен делать, чтобы не получить ошибку.