自定义值注入

发布于 2024-12-12 17:29:35 字数 615 浏览 2 评论 0原文

我对如何在未定义源属性的情况下注入值有疑问。 所以我有2个类:

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 property 中调用服务:

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

我想使用值注入器来实现这一点。 先感谢您

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

递刀给你 2024-12-19 17:29:35

如果你真的想通过价值注入来做到这一点,你可以这样做:

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

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>();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文