我已经通过常规方法成功地在我的 MVC4 项目中使用了 Signalr,方法是设置一个普通的集线器,包括 JS 文件/signalr/hubs并且它可以工作。
现在我正在尝试统一设置 DI:
在 Global.asax
UnityContainer = Bootstrapper.Initialise();
var unityDependencyResolver = new UnityDependencyResolver(UnityContainer);
// Used for MVC
DependencyResolver.SetResolver(unityDependencyResolver);
// Used for SignalR
GlobalHost.DependencyResolver = new SignalRUnityDependencyResolver(UnityContainer);
RouteTable.Routes.MapHubs();
Run Code Online (Sandbox Code Playgroud)
Bootstrapper.cs
public static IUnityContainer Initialise()
{
var unityContainer = new UnityContainer();
unityContainer.RegisterType<IUsers, Users>();
unityContainer.RegisterType<ChatHub>(new InjectionFactory(CreateMyHub));
return unityContainer;
}
private static object CreateMyHub(IUnityContainer p)
{
return new ChatHub(p.Resolve<IUsers>());
}
Run Code Online (Sandbox Code Playgroud)
和集线器: public class UserHub : Hub { private readonly IUsers _users;
public ChatHub(IUsers users)
{
_users = users; …Run Code Online (Sandbox Code Playgroud) 我使用小数类型进行高精度计算(货币)。
但我今天遇到了这个简单的划分:
1 / (1 / 37)这应该再次得到 37
http://www.wolframalpha.com/input/?i=1%2F+%281%2F37%29
但 C# 给了我:
37.000000000000000000000000037M
我尝试了这两个:
1m/(1m/37m);
和
Decimal.Divide(1, Decimal.Divide(1, 37))
但两者产生相同的结果。这种行为如何解释?
我正在尝试将表单固定到桌面,就像小工具侧边栏一样.
它不应受Win + D和显示桌面按钮的影响.
哪种方法最好?
我可以找到Progman并将我的表格的父级设置为此,但我读到它并不是最好的方法.
我有一个webbrowser控件,我导航到包含此html的URL:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title></title>
</head>
<body marginheight="60" topmargin="60">
<p align="center"><img src="nocontent.jpg" alt="" height="434" width="525" border="0" /></p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
但是,当我使用此代码获取源代码时:
HTMLDocument objHtmlDoc = (HTMLDocument)browser.Document.DomDocument;
string pageSource = objHtmlDoc.documentElement.innerHTML;
Console.WriteLine(pageSource);
Run Code Online (Sandbox Code Playgroud)
这是结果:
<HEAD><TITLE></TITLE>
<META content=text/html;charset=utf-8 http-equiv=content-type></HEAD>
<BODY topMargin=60 marginheight="60">
<P align=center><IMG border=0 alt="" src="nocontent.jpg" width=525 height=434></P></BODY>
Run Code Online (Sandbox Code Playgroud)
这对于进一步处理没有好处,我怎样才能确保它显示与我右键单击并选择"查看源"时相同的来源?
在我正在使用此代码的类中:
public User CurrentUser
{
get
{
var unityContainer = new UnityContainer();
var httpContextHelper = unityContainer.Resolve<HttpContextHelper>();
return httpContextHelper.GetUser();
}
}
Run Code Online (Sandbox Code Playgroud)
这是在Bootstrapper.cs文件中:
public static class Bootstrapper
{
public static void Initialise()
{
IUnityContainer unityContainer = new UnityContainer();
unityContainer.RegisterType<IHttpContextHelper, HttpContextHelper>();
DependencyResolver.SetResolver(new UnityDependencyResolver(unityContainer));
}
}
Run Code Online (Sandbox Code Playgroud)
我不能在这里使用构造函数注入,因为它是一个基类,重构需要相当多的工作.
但是我如何对此进行单元测试呢?我找不到合适的模拟方法unityContainer.Resolve.
好吧,我对这项技术有疑问,更准确地说是在它的实现方面,在互联网上找不到好的例子,因为它涉及 javascript 和 php,只是,你会有一些链接,我可以在其中找到这个东西真的有效吗?
我用c ++编写了一个简单的测试程序,但为什么会崩溃:
s[i] = s[i] - 'a' + 'A';
Run Code Online (Sandbox Code Playgroud)
例外:访问冲突写入位置0x01327808
#include "stdafx.h"
#include <iostream>
using namespace std;
class String
{
public:
char *s;
int len();
void upper();
String(char*);
};
String::String(char*x)
{
s = x;
}
int String::len()
{
return strlen(s);
}
void String::upper()
{
for (int i = 0; i < len(); i++)
{
if (s[i] >= 'a' && s[i] <= 'z')
{
cout << s[i] << endl;
s[i] = s[i] - 'a' + 'A';
}
}
};
int main() …Run Code Online (Sandbox Code Playgroud) c# ×4
ajax ×1
asp.net-mvc ×1
c++ ×1
comet ×1
decimal ×1
desktop ×1
forms ×1
moq ×1
pinning ×1
server-push ×1
signalr ×1
unit-testing ×1