我正在实施Ioc,我想确保一些正确的事情.
RegisterInstance,在解析它时将始终返回单例对象?但我想知道如何
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) 我们有一个复杂的结构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如此混乱?保持两个级别?是可能还是我朝错误的方向走?
在.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) 我有一个应用程序,我已将我的管理面板移动到区域,从那时起我无法点击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