Я хочу, чтобы свойство EmployeeNumber для Employee задавалось только базой данных, но мне нужно иметь возможность установить значение для модульного тестирования. Вот почему я сделал код помощника ниже.
Может ли кто-нибудь помочь мне решить проблему и исправить это?
Приветствия
Berryl
Код помощника
public static void SetEmployeeNumberFor(Employee employee, EmployeeNumber employeeNumber)
{
var empNumberProperty = employee.GetType().GetProperty("EmployeeNumber", BindingFlags.Public | BindingFlags.Instance);
Check.Invariant(empNumberProperty != null);
Check.Invariant(empNumberProperty.PropertyType.Equals(typeof(EmployeeNumber)));
empNumberProperty.SetValue(empNumberProperty, employeeNumber, null);
}
Полное исключение
System.Reflection.TargetException : Object does not match target type.
at System.Reflection.RuntimeMethodInfo.CheckConsistency(Object target)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.RuntimePropertyInfo.SetValue(Object obj, Object value, BindingFlags invokeAttr, Binder binder, Object[] index, CultureInfo culture)
at System.Reflection.RuntimePropertyInfo.SetValue(Object obj, Object value, Object[] index)
TestableEmployee.cs(36,0): at Smack.ConstructionAdmin.TestingSupport.ResourceHelper.SetEmployeeNumberFor(Employee employee, EmployeeNumber employeeNumber)
TestableEmployee.cs(47,0): at Smack.ConstructionAdmin.TestingSupport.ResourceHelperTests.SetEmployeeNumberFor()
Код имущества EmployeeNumber
public virtual EmployeeNumber EmployeeNumber {
get { return _employeeNumber; }
protected set {
_employeeNumber = value;
//base.BusinessId = _employeeNumber;
}
}
private EmployeeNumber _employeeNumber;