小编Chr*_*tle的帖子

73
推荐指数
3
解决办法
3万
查看次数

ConcurrentDictionary键或值属性线程安全

有关于螺纹安全的问题ConcurrentDictionary.从API,我看到枚举器是线程安全的,但我没有看到键和值属性相同.我的问题是:

当有其他线程同时修改它时,循环遍历KeysValues集合是否安全?

.net c# multithreading

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

C#:将Dictionary <>转换为NameValueCollection

如何将a转换Dictionary<string, string>NameValueCollection

我们项目的现有功能返回了一个老式的NameValueCollection,我用LINQ修改.结果应该作为一个传递NameValueCollection.

我想以通用的方式解决这个问题.任何提示?

c# namevaluecollection

30
推荐指数
3
解决办法
2万
查看次数

LINQ选择到词典

我正在尝试将a Select和项目中的每个元素投射到一个Dictionary<string, UdpReceiveResult> 我当前有一个Select只是将a的值投影到类型Dictionary列表.是一本类型的字典.我有tasksUdpReceiveResultclientsDictionary<string, UdpClient>

var tasks = clients.Select(c => c.Value.ReceiveAsync()).OrderByCompletion();
Run Code Online (Sandbox Code Playgroud)

我想将密钥和ReceiveAsync()结果投影到一个新的Dictionary.该OrderByCompletion是Nito.AsyncEx DLL.

c# linq

27
推荐指数
2
解决办法
2万
查看次数

在c#中使用Moq进行模拟

我有以下代码:

public interface IProductDataAccess
{
    bool CreateProduct(Product newProduct);
}
Run Code Online (Sandbox Code Playgroud)

ProductDataAccess实现了该接口.

public class ProductBusiness
{
    public bool CreateProduct(Product newProduct)
    {
        IProductDataAccess pda = new ProductDataAccess();
        bool result = pda.CreateProduct(newProduct);
        return result;
    }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,如何CreateProduct通过模拟IProductDataAccess接口来创建方法的单元测试?我想到了一个IProductDataAccess内部的公共实例ProductBusiness并使用Mock<IProductDataAccess>object 初始化它,但是将数据访问暴露给UI层并不是一个好习惯.谁能帮我?

c# unit-testing moq mocking

22
推荐指数
4
解决办法
6万
查看次数

双倍的范围是多长吗?

在MSDN上的一篇文章中,它声明double数据类型的范围是"-1.79769313486232e308 .. 1.79769313486232e308".而long数据类型仅具有"-9,223,372,036,854,775,808 ... 9,223,372,036,854,775,807"的范围.如果它们都是64位大小,double那么如何保存这么多的数据long呢?

http://msdn.microsoft.com/en-us/library/cs7y5x0x(v=vs.90).aspx

c# size types

19
推荐指数
3
解决办法
3万
查看次数

调用.Object属性后更改Mock <IType>对象

我目前正在使用Moq框架编写单元测试和模拟依赖项.在这样做的过程中,我创建了一个Mock,如下所示:

Mock<ITraceProvider> traceProviderMock = new Mock<ITraceProvider>();
traceProviderMock.Setup(x => x.GetTraceContext(It.IsAny<string>())).Returns("test");
ITraceProvider traceObj = traceProviderMock.Object;
Run Code Online (Sandbox Code Playgroud)

但是后来我想稍微修改模拟的行为,所以我Setup再次调用Mock对象:

traceProviderMock.Setup(x => x.GetTracer(It.IsAny<string>())).Returns("tracer");
Run Code Online (Sandbox Code Playgroud)

现在没有traceProviderMock.Object再次调用,这个新的模拟行为会反映出来traceObj吗?这就是我想要的情况.

这肯定适用于该Verify()方法,但似乎不适用于该Setup方法.

我想这样做的原因是因为我使用模拟依赖项在Test Setup方法中构建了一个完整的依赖图.我只想更改我的特定测试的一个模拟依赖项的行为.后续测试也会将自己的特化应用于模拟的依赖项.

c# unit-testing moq mocking stubbing

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

复制的NameValueCollection的ToString()不会输出所需的结果

我有一个NameValueCollection初始化的usercontrol,如下所示:

private NameValueCollection _nameValues = HttpUtility.ParseQueryString(Request.QueryString.ToString());
Run Code Online (Sandbox Code Playgroud)

当我调用ToString()它时,它会生成一个正确的查询字符串,我可以将其用于更新的URL.

但是,当我NameValueCollection像这样复制via它的构造函数时:

var nameValues = new NameValueCollection(_nameValues);
Run Code Online (Sandbox Code Playgroud)

然后尝试形成一个网址:

var newUrl = String.Concat(_rootPath + "?" + nameValues.ToString());
Run Code Online (Sandbox Code Playgroud)

它会输出一个这样的网址:

" http://www.domain.com?System.Collections.Specialized.NameValueCollection "

如何复制a NameValueCollection以使ToString()方法输出所需的结果?

c# asp.net

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

使用google-guice注入列表的最佳方法是什么?

我有三个类CircleBuilder,SquareBuilderTriangleBuilder实现了ShapeBuilder接口.

我需要使用google-guice 初始化我的FormBuilder并且特别是BuilderList(扩展List<ShapeBuilder>)每个类的一个实例.

什么是最好的方法?

我知道提供者方法和这样的东西:

@Provides
FormBuilder provideFormBuilder() {
    DatabaseTransactionLog instance = new FormBuilder ( <numerous parameters> );

    ShapeBuilder builder = null ; 
    builder = new CircleBuilder( <numerous parameters> ) ;  
    instance.addBuilder( builder ) ;

    builder = new SquareBuilder( <numerous parameters> ) ;  
    instance.addBuilder( builder ) ;

    // And so on

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

但这意味着我必须创建我的FormBuilder手动操作,这违背了使用guice的目的(因为它FormBuilder是我的对象图中的顶部元素).

我希望能够写出这样的东西:

bind(BuilderList.class).to(CircleBuilder.class);
bind(BuilderList.class).to(TriangleBuilder.class);
bind(BuilderList.class).to(SquareBuilder.class);
Run Code Online (Sandbox Code Playgroud)

任何的想法?

java dependency-injection guice

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

无法将Newtonsoft.Json.Linq.JArray转换为Newtonsoft.Json.Linq.JToken.当我通过json时出错

我需要将检查过的复选框代码传递给JavaScript中的C#.我能够通过JSON发送代码.我的JSON值是JArray.我在标题中得到了例外.

JSON:

{
  "Items": [
    "100066",
    "100067"
  ]
}
Run Code Online (Sandbox Code Playgroud)

C#:

public ActionResult UpdateTransportRequests()       
{
    string json;
    using (var reader = new StreamReader(Request.InputStream))
    {
        json = reader.ReadToEnd();
    }

    JObject jo = (JObject)JsonConvert.DeserializeObject(json);

    string lineItems = jo.Value<string>("Items");

    RequestDataAccess rda = new RequestDataAccess();
    decimal reqId = decimal.Parse(lineItems);
    rda.ApproveReject_Request(reqId, "A", "");

    return Json(new { result = "success" });
}
Run Code Online (Sandbox Code Playgroud)

客户端:

function approveAll(requestid) {
    var items = [];

    $('#grid tbody').find('input:checkbox:checked').each(function (index, item) {
        var rowIndex = $(this).closest('tr').index();
        items.push($('#grid tbody').find('tr:eq(' + rowIndex + ')').find('td:eq(1)').text().replace('TR-', ''));

    }); …
Run Code Online (Sandbox Code Playgroud)

c# json json.net

9
推荐指数
2
解决办法
4万
查看次数