Я пытаюсь использовать рефлексию, чтобы получить все (настраиваемые) свойства в моем POCO (которые пока принимают строковый аргумент, но я планирую расширяться до других типов), и установить их в произвольное значение. (Мне нужно убедиться, что метод .Equals реализован правильно.)
У меня есть код в моих модульных тестах, который выглядит примерно так (где t - тестируемый объект, а u - версия этого объекта по умолчанию):
foreach(var property in t.GetType().GetProperties())
{
var setMethod = property.GetSetMethod();
var type = setMethod.GetParameters()[0].GetType();
if(typeof(string).IsAssignableFrom(type))
{
setMethod.Invoke(t, new object[] {"a"});
Assert.IsFalse(t.Equals(u));
Assert.IsFalse(t.GetHashCode() == u.GetHashCode());
}
}
Место, где это терпит неудачу, - это место, где я говорю typeof(string).IsAssignableFrom(type)
. Код внутри блока if { ... }
никогда не запускается. Как бы я правильно запрограммировал эту часть теста?