小编Mar*_*ann的帖子

使用PowerShell进行依赖注入

是否可以在Windows PowerShell中使用依赖注入(DI)?

我的初步实验表明它不是.如果我尝试在CmdLet中使用构造函数注入,它甚至不会注册自己.换句话说,这是不可能的:

[Cmdlet(VerbsDiagnostic.Test, "Ploeh")]
public class PloehCmdlet : Cmdlet
{
    public PloehCmdlet(IFoo foo)
    {
        if (foo == null)
        {
            throw new ArgumentNullException("foo");
        }

        // save foo for later use
    }

    protected override void ProcessRecord()
    {
        this.WriteObject("Ploeh");
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我添加一个默认构造函数,可以注册和使用CmdLet,但是没有默认构造函数,它根本就不可用.

我知道我可以使用服务定位器来检索我的依赖项,但我认为这是一种反模式,所以不想这样做.

我希望PowerShell API有一些类似于WCF的ServiceHostFactory的'Factory'钩子,但是如果有的话,我找不到它.

powershell dependency-injection

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

使用Moq模拟AutoMapper Mapper.Map调用

什么是在AutoMapper中为Map函数设置模拟预览的最佳方法.

我提取IMapper接口,以便我可以设置该接口的预期.我的映射器有依赖关系,所以我必须将它们传递给映射器.

当我创建2个mapper类实例时会发生什么,有2个不同的依赖实现?我认为两个映射器将使用相同的依赖项实例,因为AutoMapper映射是静态的.或者AutoMapper甚至可能会抛出异常,因为我尝试使用相同的对象设置2个不同的地图.

什么是解决这个问题的最佳方法?

public interface IMapper {
    TTarget Map<TSource, TTarget>(TSource source);
    void ValidateMappingConfiguration();
}

public class MyMapper : IMapper {
    private readonly IMyService service;

    public MyMapper(IMyService service) {
        this.service = service
        Mapper.CreateMap<MyModelClass, MyDTO>()
            .ForMember(d => d.RelatedData, o => o.MapFrom(s =>
                service.getData(s.id).RelatedData))
    }

    public void ValidateMappingConfiguration() {
        Mapper.AssertConfigurationIsValid();
    }

    public TTarget Map<TSource, TTarget>(TSource source) {
        return Mapper.Map<TSource, TTarget>(source);
    }
}
Run Code Online (Sandbox Code Playgroud)

c# moq automapper

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

如何阻止curl php发送接受标头

默认情况下,curl会Accept: */*为所有请求发送标头.如何停止发送默认标头?

 Accept: */* 
Run Code Online (Sandbox Code Playgroud)

php curl

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

如何在苹果酒repl中编写多行函数?

我在Emacs中使用Clojure和Cider REPL.

是否可以在苹果酒REPL中使用多行功能?我怎样才能做到这一点?

emacs clojure cider

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

apay是怎么组成的?

我在那里,写一个函数,它接受一个值作为输入,调用该输入的函数,如果结果是Just x,它应该返回x; 否则,它应该返回原始输入.

换句话说,这个功能(我不知道该叫什么):

foo :: (a -> Maybe a) -> a -> a
foo f x = fromMaybe x (f x)
Run Code Online (Sandbox Code Playgroud)

由于它看起来像是一个通用功能,我想知道它是否已经定义,所以我在推特上问过,克里斯艾伦回复说它是ap fromMaybe.

这听起来很有希望,所以我解雇了GHCI并开始尝试:

Prelude Control.Monad Data.Maybe> :type ap
ap :: Monad m => m (a -> b) -> m a -> m b
Prelude Control.Monad Data.Maybe> :type fromMaybe
fromMaybe :: a -> Maybe a -> a
Prelude Control.Monad Data.Maybe> :type ap fromMaybe
ap fromMaybe :: (b -> Maybe …
Run Code Online (Sandbox Code Playgroud)

monads haskell

19
推荐指数
4
解决办法
658
查看次数

实体框架:在运行时更改连接字符串

假设有一个ASP.NET MVC应用程序使用Entity Framework 6,代码优先方法和StructureMap作为IoC.
它还使用工作单元模式.以下是代码:

域类

    public class Product
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public decimal Price { get; set; }        
 
    }
Run Code Online (Sandbox Code Playgroud)

IUnitOfWork和DbContext:

    public interface IUnitOfWork
{
    IDbSet<TEntity> Set<TEntity>() where TEntity : class;
    int SaveChanges();
}

public class Sample07Context : DbContext, IUnitOfWork
{
    public DbSet<Product> Products { set; get; }

    #region IUnitOfWork Members

    public new IDbSet<TEntity> Set<TEntity>() where TEntity : class
    {
        return base.Set<TEntity>();
    }

    #endregion
}
Run Code Online (Sandbox Code Playgroud)

服务类中的业务逻辑:

   public interface …
Run Code Online (Sandbox Code Playgroud)

c# structuremap asp.net-mvc entity-framework dependency-injection

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

Applicative 中对纯的需求

我正在学习 Haskell 的应用程序。在我看来(我可能错了)该pure功能并不是真正需要的,例如:

pure (+) <*> [1,2,3] <*> [3,4,5]
Run Code Online (Sandbox Code Playgroud)

可以写成

(+) <$> [1,2,3] <*> [3,4,5]
Run Code Online (Sandbox Code Playgroud)

有人可以解释该pure函数提供的显式映射的好处fmap吗?

haskell applicative

18
推荐指数
2
解决办法
765
查看次数

泛型类型已包含定义

如果我尝试Pair<A, B>在 C# 中定义以下类,则会出现编译器错误。

public class Pair<A, B>
{
    public Pair(A a, B b)
    {
        this.A = a;
        this.B = b;
    }

    public A A { get; }
    public B B { get; }
}
Run Code Online (Sandbox Code Playgroud)

编译器错误是:

error CS0102: The type 'Pair<A, B>' already contains a definition for 'A'
error CS0102: The type 'Pair<A, B>' already contains a definition for 'B'
Run Code Online (Sandbox Code Playgroud)

相互矛盾的定义在哪里?

通常,可以定义一个与其类型同名的属性,例如:

public Guid Guid { get; }
public Uri Uri { get; }
Run Code Online (Sandbox Code Playgroud)

为什么编译器会抱怨名称AB …

c# generics compiler-errors

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

TextWriterTraceListener和带有GUID的跟踪文件名

我在我的应用程序中使用TextWriterTraceListener(System.Diagnostics)来跟踪异常等几件事情......

应用程序在终端服务器上运行,如果有许多用户同时使用它,则侦听器开始在文件名中创建许多带有随机GUID的跟踪文件.

是否存在避免此行为的可能性或变通方法?

.net guid trace-listener

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

将自定义控件dll添加到Visual Studio ToolBox

我有一个自定义控件DLL.如何以编程方式将这些自定义控件添加到VS2008工具箱?

c# controls visual-studio-2008 visual-studio

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