考虑这个简单的代码:
public void Main()
{
var d = new Derived();
test(d);
}
public void test(Base parameter)
{
parameter.Validate();
}
public class Base
{
}
public class Derived : Base
{
}
public static class Validation
{
public static void Validate(this Base b)
{
Console.WriteLine("Validation for base");
}
public static void Validate(this Derived d)
{
Console.WriteLine("Validation for Derived");
}
}
Run Code Online (Sandbox Code Playgroud)
当测试方法被调用时,它将执行 Validate 方法,该方法采用基本参数,而不是像我调用d.Validate().
如何强制测试方法调用正确的 Validate 方法,而不在其中进行类型测试?
我无法将嵌套模型的值恢复到控制器,它们都是空值.
这是简化的架构:
//The viewModel being passed to the view
public class RunnerIndexViewModel
{
public RegisterViewModel User { get; set; }
public TrainerViewModel TrainerVM { get; set; }
public RunnerBase Runner { get; set; }
[Display(Name = "AddContact", ResourceType = typeof(MyRessources))]
public bool AddContact { get; set; }
}
public class RegisterViewModel
{
// various simple type properties here
}
public class TrainerViewModel
{
// various properties here
public Unit unit { get; set; }
public List<SelectListItem> ListStatut { get; set; …Run Code Online (Sandbox Code Playgroud)