自定义值注入

本文关键字:注入 自定义 | 更新日期: 2023-09-27 18:13:01

我有关于如何在没有定义源属性的情况下注入值的问题。所以我有两个class:

User.cs

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

和UserViewModel.cs

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

如何注入RoleName?我需要调用我的服务来检查数据库中用户的角色。我不希望在get属性中调用服务,像这样:

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

我想使用值注入器来实现这一点。提前谢谢大家

自定义值注入

如果你真的真的想用valueinjection来做这个你可以这样做:

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>();