Search code examples
c#.netasp.net-mvc-3valueinjecter

Custom Value Injection


I have question about how to inject value with no source property defined. so I have 2 class :

User.cs

public class User
{
    public int UserId { get; set; }
    public string UserName { get; set; }
}

and UserViewModel.cs

public class UserViewModel
{
    public int UserId { get; set; }
    public string UserName { get; set; }
    public string RoleName { get; set; }
}

how to inject the RoleName? I need to call my service to check to database what user's role. and I dont wanna the service called in get property like this :

public string RoleName
    {
        get { return Roles.GetRolesForUser(UserName).FirstOrDefault(); }
    }

I want to achieve this using value injecter. Thank you in advance


Solution

  • if you really really want to do this with a valueinjection you could do like this:

    public class SetRole : NoSourceValueInjection
         {
             protected override void Inject(object target)
             {
                 dynamic t = target;
                 t.RoleName = Roles.GetRolesForUser(t.UserName).FirstOrDefault();
             }
         }
    
    uvm.InjectFrom(user)
       .InjectFrom<SetRole>();