我有一个装饰器,有一些其他依赖项,也应该使用容器解决.例:
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注册装饰器会导致这种行为?
如何将参数传递给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框架?
在查看几个项目的源代码时,我发现了一个我无法理解的模式.例如,在更改静态提供程序时使用FubuMVC和Common 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) 是否可以为 (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 开始的文档。
提前致谢
我知道可以将OpenFolderDialog的当前文件夹设置为特殊文件夹,如"Program Files"或Desktop?
但我在哪里可以找到这个?
c# ×4
.net ×1
autofac ×1
decorator ×1
directory ×1
file ×1
frameworks ×1
fubumvc ×1
structuremap ×1
web-services ×1