小编Rub*_*ink的帖子

从集合中随机返回项目

我有一个从数据库返回通用列表集合(List)的方法.此系列包含订单详细信息,即订单ID,订单名称,产品详细信息等.

此外,该方法返回一个集合,该集合仅包含按订单日期降序排序的前5个订单.

我的要求是每次客户端调用此方法时,我需要返回有5个随机命令的集合.

我如何使用C#实现这一目标?

c# generics random filtering random-sample

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

Linq铸造类型之间

有没有更好的方法使用linq将这个guid字符串列表强制转换为guid:

public static IList<Guid> ToGuidList(this IList<string> guids)
    {
        IList<Guid> guidList = new List<Guid>();
        foreach(var item in guids)
        {
            guidList.Add(new Guid(item));
        }
        return guidList;
    }
Run Code Online (Sandbox Code Playgroud)

我在看:

guids.Cast<Guid>().ToList()
Run Code Online (Sandbox Code Playgroud)

但这似乎不是诀窍.

任何提示赞赏.

linq linq-to-objects

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

在哪里放置我的xUnit测试用于F#程序集?

我正在研究我的第一个"真正的"F#装配,并试图做正确的事情.

我设法让xUnit工作,但目前我的测试模块在同一个程序集中.这让我感到困扰,因为这意味着我将发布一个程序集,其中近一半的代码(和80%的API)是测试方法.

这样做的"正确"方法是什么?如果我把测试放在另一个组件中,我认为这意味着我必须暴露内部,我宁愿保密.

我知道在C#中有一个测试的朋友机制(如果这是正确的术语),F#中是否存在等价物?

或者,任何人都可以指出我正在"正确"完成这个项目的示例项目吗?

tdd f# projects-and-solutions xunit.net

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

使用CompositionBatch对象从CompositionContainer中删除零件

我有一个基于MEF的解决方案,它有几个导出的接口实现.

我希望能够做的是有一个开关,删除与界面相关的所有当前部件,取而代之的是只用一个实现替换它们.我一直试图用一个CompositionBatch对象做这个,但它似乎不起作用.这是我正在做的一个例子:

[Export(typeof(IFoo)]
public class Foo1 : IFoo
{ }

[Export(typeof(IFoo)]
public class Foo2 : IFoo
{ }
Run Code Online (Sandbox Code Playgroud)

然后我有我的容器:

var container = new CompositionContainer(....);
Run Code Online (Sandbox Code Playgroud)

现在将包含代表Foo1和的部分Foo2.我想做的是用另一个IFoo实现替换它们.这就是我正在尝试的,我认为这会起作用:

var partsToRemove
   = from part in container.Catalog.Parts
       from exDef in part.ExportDefinitions
       where exDef.ContractName == AttributedModelServices.GetContractName(typeof(IFoo))
     select part.CreatePart();

var batch = new CompositionBatch(null, partsToRemove);

batch.AddPart(new Foo3());

container.Compose(batch);
Run Code Online (Sandbox Code Playgroud)

我期待container.Catalog.Parts改变以反映我的变化,但事实并非如此.它与首次创建容器时保持一致.

我错过了什么?这甚至是正确的方法吗?我已经阅读了Glenn Block关于使用ExportProviders的CodeBetter文章,但他提到他将编写第2部分,其中他将介绍如何实现过滤ExportProvider(可能更接近我需要做的事情).

mef

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

如何安装CodeRush和Resharper?CodeRush快捷方式丢失

我试图一起安装CodeRush和ReSharper.

安装ReSharper后,我的CodeRush快捷方式消失了.有没有人知道如何安装Resharper恢复我的CodeRush短裤?

这是我目前的设置:1.Visual Studio 2008 2.已安装的CodeRush XPress 10.1 3.已安装的ReSharper 5.1

我在具有8 GB RAM的Windows 7 x64计算机上安装,因此内存不会成为问题.

resharper coderush

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

Moq:高级模拟设置

我对Moq来说比较新,并且有这个复杂的案例可以模拟并且有点困难.我希望有经验的Moq用户可以就此提出建议:

在我的ViewModel中,ctor正在调用这个load方法:

public void LoadCategories()
        {
            Categories = null;
            BookDataService.GetCategories(GetCategoriesCallback);
        }
Run Code Online (Sandbox Code Playgroud)

我想明显嘲笑服务.但是由于服务的方法是无效的,并且返回总是通过回调,因此对我来说太复杂了.

private void GetCategoriesCallback(ObservableCollection<Category> categories)
        {
            if (categories != null)
            {
                this.Categories = categories;
                if (Categories.Count > 0)
                {
                    SelectedCategory = Categories[0];
                }
                LoadBooksByCategory();
            }
        }
Run Code Online (Sandbox Code Playgroud)

因为这还不够糟糕,正如你所看到的,在调用LoadBooksByCategory()中有另一个LoadMethod

public void LoadBooksByCategory()
        {
            Books = null;
            if (SelectedCategory != null)
                BookDataService.GetBooksByCategory(GetBooksCallback, SelectedCategory.CategoryID, _pageSize);
        }

private void GetBooksCallback(ObservableCollection<Book> books)
        {
            if (books != null)
            {
                if (Books == null)
                {
                    Books = books;
                }
                else
                {
                    foreach (var book in books)
                    { …
Run Code Online (Sandbox Code Playgroud)

.net unit-testing moq

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

Ninject 2:是否有相当于1.5的InjectPropertiesWhere?

我在我的MVC项目中使用Ninject 1.5.它运行良好,但由于我们有Ninject 2,我可以升级(并且另外使用每个请求行为,这在1.5中无法正常工作).Ninject 1.5具有InjectPropertiesWhere功能,在Ninject 2中缺失(至少在我前一段时间测试它时).有类似的东西吗?

示例InjectPropertiesWhere:

return Bind<IUserService>().To<UserService>()
    .InjectPropertiesWhere(p => p.Name.EndsWith("Repository"))
    .InjectPropertiesWhere(p => p.Name.EndsWith("Service"))
    .InjectPropertiesWhere(p => p.Name == "ApplicationCache")
    .InjectPropertiesWhere(p => p.Name == "CurrentPrincipal")
    .InjectPropertiesWhere(p => p.Name == "CTEmailSender")
    .InjectPropertiesWhere(p => p.Name == "CTSettings");
Run Code Online (Sandbox Code Playgroud)

c# dependency-injection ninject ninject-2

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

一个用于依赖注入的框架(在MVC应用程序中)和简单的AOP任务(使用属性)

我已经到了想要在我的ASP.NET应用程序中完成2个任务的地步,这两个任务都可以使用一些AOP框架来完成,但它们都具有不同的性质:

  1. 我的控制器和服务的依赖注入
  2. 我创建了自定义属性NotNullAttribute并用它标记了一些方法的参数或属性,而不是ArgumentNullException在这些参数或属性为null时抛出.我希望AOP框架在编译时检查这些属性,并添加throw原因.示例如下:

    //original code that I write
    public void MyMethod([NotNull]string param1){
        //do something
    }
    
    Run Code Online (Sandbox Code Playgroud)

    .

    //code actually being compiled - after AOF processing/weaning  
    public void MyMethod(string patam1){
        if(param1 == null){
            throw new ArgumentNullException("param1");
        }
        //do something
    }
    
    Run Code Online (Sandbox Code Playgroud)

所以我想要框架(甚至不一定是AOP,但我想它必须是),这将允许我简单地完成这两项任务.

我有一些额外的要求:

  • 占地面积小,1或2个组件
  • 集成到VS - 我只想按下Ctrl+F5编译,框架可以正常工作,注入依赖项,添加异常抛出代码,我甚至不知道它.我不想从命令行或类似的东西运行预编译.
  • 异常抛出代码生成我喜欢写类.像常规方面一样.不是XML,没有配置(可以接受约定).对于依赖注入,我也更喜欢类,但XML或其他配置文件是可以接受的,但它应该足够简单,以供那些不真正了解XML并且不喜欢它的人使用.

有一些这样的框架吗?如果还有更多的优点/缺点?


编辑:哦,是的,我忘记了非常重要的想法:框架应该是免费的.

.net c# asp.net-mvc aop dependency-injection

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

从MVC 2升级后,Asp.net MVC 3没有与Ninject合作?

我有一个使用Asp.net MVC2的Web应用程序.我将它升级到MVC 3,现在我发现OutputCache功能不再起作用了.我创建了一个简单的Test动作,如下所示.

 [OutputCache(Duration = 1000000, VaryByParam = "none")]
 public virtual ActionResult CacheTest(string name)
  {
     string message = string.Format("{0}: Time is {1}", name, DateTime.Now.ToLongTimeString());
     ViewData.Add("Message", message);
     return View();
  }
Run Code Online (Sandbox Code Playgroud)

这总是给出当前时间,表明它没有被缓存.我在这里错过了什么吗?

更多信息:如果我创建一个新的Mvc3应用程序,它工作正常.它只在升级的应用程序中,我有这个问题.

更新:我也在使用Ninject.如果我停止使用Ninject OutputCache开始工作.

public class MvcApplication : System.Web.HttpApplication
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}.aspx/{id}", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } …
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-mvc caching ninject asp.net-mvc-3

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

温莎城堡问题

我有一个城堡核心的问题,我试图注入两个不同的数据库连接到特定的存储库.

public class Repository1 { 
  public Repository1(System.Data.Common.DbConnection conn) { } 
}
public class Repository2 { 
  public Repository2(System.Data.Common.DbConnection conn) { } 
}
Run Code Online (Sandbox Code Playgroud)

现在举例来说,我希望将Mysql连接注入Repository1,并将Oracle连接注入repository2.

.net castle-windsor inversion-of-control

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