小编Waq*_*qas的帖子

IoC - Unity,RegisterInstance如何工作,我是对的吗?

我正在实施Ioc,我想确保一些正确的事情.

  1. 如果我使用RegisterInstance,在解析它时将始终返回单例对象?
  2. BootStrapper将加载到Global.asax或最初将加载的某个地方,这意味着所有实例都将是单例?

但我想知道如何
1.每个解析创建一个单独的实例,PerResolve不能使用RegisterInstance,它只适用于RegisterType.
2.如果我将依赖对象作为静态属性,它将以相同的方式工作,如果我能够为每个解析创建单独的实例?

请帮忙?

public class ClientUser : UserServiceBase, IClientUser
{
    private  IDataServiceManager _dataServiceManager;
    public ClientUser()
    {

    }

    private IDataServiceManager DataServiceMgr
    {
        get
        {
            if (_dataServiceManager == null)
                _dataServiceManager = ProjectContainer.Instance.Resolve<IDataServiceManager>();

            return _dataServiceManager;
        }
    }    
Run Code Online (Sandbox Code Playgroud)

.net singleton ioc-container unity-container

8
推荐指数
1
解决办法
6627
查看次数

休息API开发用于复杂的分层项目

我们有一个复杂的结构BPM解决方案.我们现在想要将结构公开为一组休息API.

我们有一个应用程序,在应用程序中我们有工作流程,工作流程可以有动作.动作有字段和字段可以有规则.

所以现在第一组字段或规则的api被制作为

[获取] apps/1/workflows/1/actions/1/fields/4 /规则

[发布]

应用/ 1 /工作流/ 1 /动作/ 1 /场/ 3 /规则

但这看起来不太好,这些可能会变得更复杂,通常我读到的是尽可能保持URI尽可能简单,不应该进入那个深度.

那么对于上面提到的应该是首选的uri.

我们应该将字段和规则作为单独的资源吗?或者如何去做.如果我们将它作为单独的资源,那么如何获得特定的字段.它不会需要很多参数,然后又不是一个好的方法.

再次编辑

我要确认的是,如果制作我上面提到的深度URI是一个很好的标准(一些人认为这不是一个很好的方法),但正如你所提到的更像是一个选择.

那么如果我没有选择制作长URI并且保持它非常适合至少版本1,该怎么办呢?

在上面的URI示例中,我必须提供应用ID,工作流ID,操作ID和字段ID才能到达必填字段.这将保持这种方式,除非我有一些哈希来识别特定的URI.所以

apps/1/workflows/1/actions/1/fields/3/rules

/55667788

如果我想保持URI可读性小而该怎么办?例如, Fields/返回app 1的所有字段,工作流1动作1但是如何提供所有这些id而不会使我的URI如此混乱?保持两个级别?是可能还是我朝错误的方向走?

api rest uri

2
推荐指数
1
解决办法
2392
查看次数

通过 float 或decimal 调用参数为 double 的重载函数

在.net中,我为“Add”创建了三个重载函数,参数为float、double和decimal。为什么它总是调用 double 而不是其他的?我只是想理解优先的原因。

 public Form1()
 {
     var g = Add(4.5, 5.6);
 }

 public object Add(float a, float b)
 {
         return a + b;
 }

 public object Add(double a, double b)
 {
        return a + b;
 }

 public object Add(decimal a, decimal b)
 {
     return a + b;
 }
Run Code Online (Sandbox Code Playgroud)

.net double overloading decimal

2
推荐指数
1
解决办法
1048
查看次数

WebApi路由在区域中不起作用

我有一个应用程序,我已将我的管理面板移动到区域,从那时起我无法点击adminpanel api调用.这是主api注册和管理面板api注册的代码.

    //Api registration
    public static void Register(HttpConfiguration config)
    {

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{action}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );


        config.Routes.MapHttpRoute(
            name: "Secondary",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );


    //Area Registration
    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "Admin_panel",
            "AdminPanel/{controller}/{action}/{id}",
            new { controller = "Admin", action = "Index", id = UrlParameter.Optional }
        );


        context.Routes.MapHttpRoute(
          "Admin_Secondary",
          "AdminPanel/api/{controller}/{id}",
          new { id = RouteParameter.Optional }
      );
    }
Run Code Online (Sandbox Code Playgroud)

我试图用URL localhost/taw/adminpanel/api/SearchAPI来打它但它不起作用.我的路由有什么问题?

asp.net asp.net-mvc-routing asp.net-mvc-areas asp.net-web-api

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