小编Som*_* me的帖子

继承和扩展方法

考虑这个简单的代码:

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 方法,而不在其中进行类型测试?

c# inheritance extension-methods

5
推荐指数
1
解决办法
3832
查看次数

MVC Complex模型绑定与继承,嵌套viewModels和部分视图

我无法将嵌套模型的值恢复到控制器,它们都是空值.

这是简化的架构:

//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)

c# asp.net-mvc entity-framework asp.net-mvc-5

3
推荐指数
1
解决办法
2649
查看次数