gpt4 book ai didi

c# - 如何使用结构图为所有子类的基类设置属性?

转载 作者:太空宇宙 更新时间:2023-11-03 13:30:07 24 4
gpt4 key购买 nike

我有许多(60 或 70 个)子类共享基类。这个基类公开了一个 ICacheProvider 类型的属性,当每个父类(super class)都注册到 structuremap 时需要设置该属性。我使用的是结构图版本 2.6.1。目前,我正在为每个父类(super class)设置属性,因此:

        For<IBusinessRule<IEnumerable<int>>>()
.Use<ManufacturersWithReviewsRule>()
.Named(NamedRuleConstants.ManufacturersWithReviews)
.Setter<ICacheProvider>().Is(ObjectFactory.GetNamedInstance<ICacheProvider>(CacheConstants.IndexCacheKeyPrefix));

For<IBusinessRule<IEnumerable<int>>>()
.Use<ManufacturersWithOwnersReviewsRule>()
.Named(NamedRuleConstants.ManufacturersWithOwnersReviews)
.Setter<ICacheProvider>().Is(ObjectFactory.GetNamedInstance<ICacheProvider>(CacheConstants.IndexCacheKeyPrefix));

For<IBusinessRule<IEnumerable<int>>>()
.Use<ManufacturersWithLivingWithItRule>()
.Named(NamedRuleConstants.ManufacturersWithLivingWithIt)
.Setter<ICacheProvider>().Is(ObjectFactory.GetNamedInstance<ICacheProvider>(CacheConstants.IndexCacheKeyPrefix));

(ManufacturersWithReviewsRule、ManufacturersWithOwnersReviewsRule、ManufacturersWithLivingWithItRule 每个子类 BaseBusinessRule)

我想做的是指定:

.Setter<ICacheProvider>().Is(ObjectFactory.GetNamedInstance<ICacheProvider>(CacheConstants.IndexCacheKeyPrefix));

对于所有的一次,允许我在需要不同的 ICacheProvider 时单独设置它。

使用 structuremap 2.6.1 这可能吗?我找不到办法。

最佳答案

对于类似的概念,当我想在默认级别上设置任何具有某种类型属性的对象时,我使用类似这样的东西

// during the ObjectFactory.Initialize
x.SetAllProperties(set => set.OfType<ICacheProvider>());

// something more...
// this way the instance could be shared
x.For<ICacheProvider>()
// as a singleton
.Singleton()
.Use<DefaultCacheProvider>();

关于c# - 如何使用结构图为所有子类的基类设置属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20902682/

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