gpt4 book ai didi

c# - StructureMap 有条件使用

转载 作者:行者123 更新时间:2023-11-30 14:03:33 26 4
gpt4 key购买 nike

我整天都在绞尽脑汁,找不到任何解决方案,所以我需要帮助。听说是我的问题:我有两个实现一个接口(interface)的类

public interface ICacheObject
{
string Get();
}

public class WebCacheObject : ICacheObject
{
public string Get()
{
return "Web";
}
}

public class SysteCacheObject : ICacheObject
{
public string Get()
{
return "System";
}
}

所以在其他一些情况下,例如在类测试中,我需要注入(inject) WebCacheObject,在 Test2 情况下,我需要注入(inject) SystemCacheObject。我在初始化中这样做了:

            ObjectFactory.Initialize(c =>{ c.For<IMessage>().Use<Message>();
c.For<ICacheObject>().ConditionallyUse(t =>{t.If(g => g.RequestedName == "HTTP")
.ThenIt.Is.ConstructedBy(
() =>
new WebCacheObject());

t.If(g =>g.RequestedName =="OtherCache")
.ThenIt.Is.ConstructedBy(
() =>
new SysteCacheObject
());
});

但我不知道如何调用 Test-s clase-s 所以如果我调用的话条件为真(或者如何更改条件以便它起作用)

ObjectFactory.GetInstance<'ITest>()

Test Clase 会在其他情况下使用 WebCache SystemCache???

抱歉我的英语不好。

最佳答案

我认为您应该避免使用 if 的条件构造语法 - 如果有更简单的替代方法。在你的情况下,我认为这会做:

For<ICacheStorage>().Use<NullObjectCache>();
For<Test>().Use<Test>.Ctor<ICacheStorage>().Is<HttpContextCacheAdapter>();
For<Test2>().Use<Test2>.Ctor<ICacheStorage>().Is<HttpContextCacheAdapter>();

关于c# - StructureMap 有条件使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3965933/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com