小编Tim*_*oyd的帖子

MSTest TestMethod依赖注入

我正在使用DI容器,我想用容器中解析的实例进行MSTest(VS 2010)单元测试.

我想将这些实例注入我的TestMethod或至少我的TestClass.这可能吗?

现在我的TestMethods直接调用container.Resolve<T>(xxx)我宁愿避免的,这样我的注射测试更加真实.

有人有这方面的经验吗?

提前致谢.

.net mstest dependency-injection visual-studio-2010

6
推荐指数
2
解决办法
2710
查看次数

Ninject:仅按名称解析依赖关系

我有一个WPF视图\视图模型绑定模式,我想通过名称解析Ninject的依赖关系,而不是类型或类型+名称.我想用Ninject命名我的视图模型,然后通过这个名称引用视图中的视图模型进行视图注入(通过Caliburn.Micro).

我意识到在实践中可以使用相同的名称注册多个类型,但我想要一个约定类型模式,并且我愿意接受这种情况.我只需要解决"对象"以使WPF绑定工作.

例如,我有什么方法可以:

  • 检索所有绑定,无论它们注册的是哪种类型.
  • 探测具有适当名称的绑定.
  • 通过绑定创建实例.

c# ninject ninject-2

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

视图中的MVVM绑定正交方面,例如应用程序设置

我有一个使用WPF\Prism\MVVM开发的应用程序.一切顺利,我有一些令人愉快的MVVM实现.但是,在我的一些视图中,我希望能够绑定应用程序设置,例如,当用户重新加载应用程序时,应该在用户上次使用该应用程序时检查自动滚动网格的复选框.

我的视图需要绑定到保持"自动滚动"设置状态的东西.我可以把它放在视图模型上,但是应用程序设置与视图模型的目的是正交的."自动滚动"设置控制视图的一个方面.此设置只是一个示例.将有相当多的它们和我的视图模型一起使用属性来表示应用程序设置(所以我可以绑定它们)感觉非常令人讨厌.

每个视图的一个视图模型似乎是de rigeuer ...

什么是最好\通常的做法在这里?

  • 使用应用程序设置喷涂我的视图模型?
  • 每个视图有多个视图模型,因此可以自行表示设置吗?
  • 拆分视图,以便控件可以绑定到ApplicationSettingsViewModel?=太多的意见?
  • 别的什么?

编辑1

为了添加更多上下文,我正在开发一个带有动态选项卡式界面的UI.每个选项卡将托管一个小部件,并且有各种小部件.每个小部件都是各个视图的Prism组合.某些视图在窗口小部件中很常见,例如文件选择器视图.虽然每个窗口小部件由多个视图组成,但概念上,窗口小部件具有一组用户设置,例如,选择了最后一个文件,启用了自动滚动等.当应用程序再次启动时,需要持久保存和检索这些窗口小部件,以及窗口小部件视图重新创建.

我的问题集中在这样一个事实,即概念上一个小部件有一组用户设置,它与一个小部件由许多视图组成的事实直接相关.小部件中的每个视图都有自己的视图模型(它可以很好地和逻辑地工作)但是如果我坚持每个视图的一个视图模型,我将不得不使用用户设置支持的属性来展开每个视图模型(所以我可以数据绑定).

如果我必须使用用户设置属性来展开每个视图模型,则每个视图的单个视图模型听起来不正确.

.net wpf prism mvvm

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

如何将纯文本发布到WCF服务,即不包含在XML标记中?

这是我的问题:

我必须构建一个web服务,接受httppost正文中的纯文本.
我想使用wcf,但看起来wcf只针对xml/json.

有没有人有一个方法可以用来通过http帖子发布纯文本?
请注意,我不能使用soap或将文本包装在xml标签内,我必须遵循某些指导方针才能与现有服务使用者兼容.

提前致谢.

c# rest wcf web-services

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

如何在.NET中确定CPU缓存大小?

我想知道是否有办法确定托管代码中的CPU缓存大小?

我正在编写一个用于C#中矩阵乘法的Strassen算法,并且想知道我可以在缓存中加入多少矩阵元素来提高计算速度.

.net c# windows

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

取消DataAdapter.Fill()

场景:我们有一个附加到DataAdapter(datatable)的DataGridView,我们在一个单独的线程中使用(adapter.fill(query,datatable))在datatable中加载数据(使用delegate和beginInvoke),一旦加载了数据,我们附加了数据表到datagridview(在主线程中)

有没有办法可以检查fill()是否仍在执行并取消它.

真实场景:用户点击用户名,相应的数据将加载到数据网格中.有时,用户不耐烦并点击另一个用户(这里我要取消之前的填充并开始新的填充)

更新:我们保留两个DataApdater(和两个DataTables),我们将一个数据表附加到datagridview,并开始异步地将数据加载到另一个数据表.加载数据时,我们只需将datagridview绑定到我们刚刚填充的DataTable(并开始异步加载以前的数据)这样UI将始终获取当前数据(无需用户在UI上等待刷新或挂起)

c# ado.net

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

HTML敏捷性解析

我想在绑定列表框中使用XML到LINQ解析HTML表和disaply内容.

我正在使用HTML Agility包并使用此代码.

    HtmlWeb web = new HtmlWeb();
    HtmlAgilityPack.HtmlDocument doc = web.Load("http://www.SourceURL");
    HtmlNode rateNode = doc.DocumentNode.SelectSingleNode("//div[@id='FlightInfo_FlightInfoUpdatePanel']");
    string rate = rateNode.InnerText;
    this.richTextBox1.Text = rate;
Run Code Online (Sandbox Code Playgroud)

HTML看起来像这样..

<div id="FlightInfo_FlightInfoUpdatePanel">

   <table cellspacing="0" cellpadding="0"><tbody>
     <tr class="">
     <td class="airline"><img src="/images/airline logos/NZ.gif" title="AIR NEW ZEALAND LIMITED. " alt="AIR NEW ZEALAND LIMITED. " /></td>
     <td class="flight">NZ8</td>
     <td class="codeshare">&nbsp;</td>
     <td class="origin">San Francisco</td>
     <td class="date">01 Sep</td>
     <td class="time">17:15</td>
     <td class="est">18:00</td>
     <td class="status">DEPARTED</td>
     </tr>
Run Code Online (Sandbox Code Playgroud)

但它正在归还这一点

NZ8&nbsp;San Francisco01 Sep17:1518:00DEPARTEDAC6103NZ8San Francisco01 Sep17:1518:00DEPARTEDCO6754NZ8San Francisco01 Sep17:1518:00DEPARTEDLH7157NZ8San Francisco01 Sep17:1518:00DEPARTEDUA6754NZ8San Francisco01 Sep17:1518:00DEPARTEDUS5308NZ8San Francisco01 Sep17:1518:00DEPARTEDVS7408NZ8San Francisco01 Sep17:1518:00DEPARTEDEK407&nbsp;Melbourne/Dubai01 Sep17:5017:50DEPARTEDEK413&nbsp;Sydney/Dubai01 …
Run Code Online (Sandbox Code Playgroud)

c# xml linq html-agility-pack

5
推荐指数
2
解决办法
3159
查看次数

并行ForEach随着时间的推移耗尽极少的处理能力

我运行了以下代码,随着时间的推移(一两个小时),我注意到迭代项目需要更长时间.我正在做的事情导致这种情况发生吗?如果是这样我该怎么办呢?

        int totalProcessed = 0;
        int totalRecords = MyList.Count();

        Parallel.ForEach(Partitioner.Create(0, totalRecords), (range, loopState) =>
        {
            for (int index = range.Item1; index < range.Item2; index++)
            {
                DoStuff(MyList.ElementAt(index));
                Interlocked.Increment(ref totalImported);
                if (totalImported % 1000 == 0)
                    Log(String.Format("Processed {0} of {1} records",totalProcessed, totalRecords));
            }
        });

         public void DoStuff(IEntity entity)
         {
              foreach (var client in Clients)
              {
                  // Add entity to a db using EF
                  client.Add(entity);
              }
          }
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助

.net c# parallel-processing .net-4.0

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

C#同步进行异步调用

我有一个只允许异步调用的库,我的代码需要同步.以下代码是否可以正常工作?任何人都可以预见到它的任何问题吗?

RestResponse<T> response = null;
bool executedCallBack = false;
client.ExecuteAsync(request, (RestResponse<T> aSyncResponse)=>{
    executedCallBack = true;
    response = aSyncResponse;
});

while (!executedCallBack){
    Thread.Sleep(100);
}
..continue execution synchronously
Run Code Online (Sandbox Code Playgroud)

c# multithreading asynchronous

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

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