小编Rub*_*ben的帖子

在autofac中注册装饰器而无需手动指定所有依赖项

我有一个装饰器,有一些其他依赖项,也应该使用容器解决.例:

public class FooDecorator : IFoo
{
    public FooDecorator(IFoo inner, IBar bar, IBaz baz)
}
Run Code Online (Sandbox Code Playgroud)

我可以这样注册:

builder.RegisterType<Foo>().As<IFoo>();
builder.RegisterDecorator<IFoo>((c, inner) => 
    new FooDecorator(inner, c.Resolve<IBar>(), c.Resolve<IBaz>()), "key");
Run Code Online (Sandbox Code Playgroud)

这是有效的,但不是很好,我必须手动指定所有其他依赖项.我想做的是:

builder.RegisterDecorator<FooDecorator, IFoo>("key");
Run Code Online (Sandbox Code Playgroud)

IFoo其解析为'inner',IFoo并从容器中解析其他依赖项.这是可能的,还是我可以用Func注册装饰器会导致这种行为?

c# dependency-injection decorator autofac

14
推荐指数
2
解决办法
3458
查看次数

如何将参数传递给IOC框架中的构造函数

如何将参数传递给IOC框架中的构造函数?我想做类似的事情:(试图成为IOC框架不可知;))

object objectToLogFor = xxx;
container.Resolve<ILogging>(objectToLogFor); 

public class MyLogging : ILogging
{
    public MyLogging(object objectToLogFor){}
}
Run Code Online (Sandbox Code Playgroud)

看起来这在StructureMap中是不可能的.但我很乐意看到有人证明我错了.

其他框架是否功能更丰富?或者我是以错误的方式使用IOC框架?

language-agnostic structuremap inversion-of-control

12
推荐指数
2
解决办法
4884
查看次数

在框架中使用Func而不是实例

在查看几个项目的源代码时,我发现了一个我无法理解的模式.例如,在更改静态提供程序时使用FubuMVCCommon Service Locator a Func.任何人都可以解释使用的好处:

private static Func<IServiceLocator> currentProvider;
public static IServiceLocator Current
{
   get { return currentProvider(); }
}

public static void SetLocatorProvider(Func<IServiceLocator> newProvider)
{
   currentProvider = newProvider;
}
Run Code Online (Sandbox Code Playgroud)

代替:

private static IServiceLocator current;
public static IServiceLocator Current
{
   get { return current; }
}

public static void SetLocator(IServiceLocator newInstance)
{
   current = newInstance;
}
Run Code Online (Sandbox Code Playgroud)

c# frameworks fubumvc

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

Web服务参数说明

是否可以为 (asmx)-webservice 中使用的参数创建描述?我知道我可以使用 Description-property 设置 webmethod 的描述。但是,是否也可以向参数添加属性以在 Web 服务中为给定参数创建描述

[WebMethod(Description = @"Get all approved friends <br /> 
    where rownum >= StartPage * count AND rownum < (StartPage+1) * count")]
public Friend[] GetFriendsPaged(int startPage, int count){...}
Run Code Online (Sandbox Code Playgroud)

例如,在上面给出的示例中,我想添加 StartPage 是从 0 开始的文档。

提前致谢

c# web-services

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

将OpenFolderDialog设置为特殊文件夹

我知道可以将OpenFolderDialog的当前文件夹设置为特殊文件夹,如"Program Files"或Desktop?

但我在哪里可以找到这个?

.net c# directory file

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