小编Rog*_*Far的帖子

信号器 + 统一 DI

我已经通过常规方法成功地在我的 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)

unity-container asp.net-mvc-4 signalr

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

小数精度

我使用小数类型进行高精度计算(货币)。

但我今天遇到了这个简单的划分:

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

但两者产生相同的结果。这种行为如何解释?

c# decimal

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

c#将表格固定到桌面上

我正在尝试将表单固定到桌面,就像小工具侧边栏一样.

它不应受Win + D和显示桌面按钮的影响.

哪种方法最好?

我可以找到Progman并将我的表格的父级设置为此,但我读到它并不是最好的方法.

c# forms desktop pinning

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

C#webbrowser改变了源代码

我有一个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)

这对于进一步处理没有好处,我怎样才能确保它显示与我右键单击并选择"查看源"时相同的来源?

c# webbrowser-control

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

单元测试unityContainer.Resolve

在我正在使用此代码的类中:

    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.

c# asp.net-mvc unit-testing moq unity-container

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

AJAX 服务器推送

好吧,我对这项技术有疑问,更准确地说是在它的实现方面,在互联网上找不到好的例子,因为它涉及 javascript 和 php,只是,你会有一些链接,我可以在其中找到这个东西真的有效吗?

ajax comet server-push

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

c ++在编写公共变量时崩溃了

我用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++

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