Итак, у меня есть объектный класс, который унаследован от другого класса.Однако всякий раз, когда я пытаюсь установить дочерний класс с помощью метода InvokeMember, используя отражение, он говорит, что Method / Member не существует.Я что-то пропустил?
namespace Group {
public class Person {
public Guid PersonId { get; set; }
public string FirstName { get; set; }
public void Load(NameValueCollection fields) {
Type classType = this.GetType();
PropertyInfo[] properties = classType.GetProperties();
foreach(PropertyInfo property in properties)
{
for(int x = 0; x < fields.Count; x++)
{
if (fields.Keys[x] != property.Name) continue;
classType.InvokeMember(property.Name, BindingFlags.Instance | BindingFlags.SetProperty, Type.DefaultBinder, this, new object[] { fields[x] });
break;
}
}
}
}
namespace Group {
public class VIPPerson : Person { }
}
Следующий код вызывает вышеуказанный класс:
function someMethod() {
NameValueCollection collection = new NameValueCollection();
collection.Add("FirstName", "Mark");
VIPPerson person = new VIPPerson();
person.Load(collection);
}
Любая помощь, почему InvokeMember выдает ошибку, которая говорит, что свойство не существует?