配置静态属性与spring.NET [英] Configure static properties with spring.NET

查看:110
本文介绍了配置静态属性与spring.NET的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

什么是配置与spring.NET下面的类最佳做法?

What are best practices to configure following class with spring.NET?

using System.Collections.Generic;
using Edu3.DTOModel;

namespace Edu3.Data.SubsonicProvider.RepositoryFramework
{
    public static class RepositoryFactory
    {
        private static readonly Dictionary<string, object> Repositories = 
            new Dictionary<string, object>();

        static RepositoryFactory()
        {
            Repositories.Add(typeof(ISsoUrlTemplateRepository).Name, 
                new SsoUrlTemplateRepository());
            Repositories.Add(typeof(IPackageSessionNodeRepository).Name, 
                new PackageSessionNodeRepository());
            Repositories.Add(typeof(IPackageSessionNodeFinishedRepository).Name, 
                new PackageSessionNodeFinishedRepository());
        }

        public static IRepository<TEntity> GetRepository<TEntity, TRepository>()
            where TEntity : IEntity
        {
            var interfaceShortName = typeof(TRepository).Name;

            // The provider was in the cache, so retrieve it
            var repository = (IRepository<TEntity>)Repositories[interfaceShortName];

            return repository;
        }
    }
}

我想用Spring.NET添加存储库。这可能吗?

I would like to add the repositories with Spring.NET. Is this possible?

推荐答案

揭露字典作为一个公共财产,并删除该字段的readonly修饰符,不要使你的类是静态的。然后,使用此配置:

Expose the dictionary as a public property and remove the readonly modifier of the field and don't make your class static. Then use this configuration:

  <object id="RepositoryFactory" type="Edu3.Data.SubsonicProvider.RepositoryFramework. RepositoryFactory, Edu3.Data.SubsonicProvider.RepositoryFramework">
    <property name="Repositories">
      <dictionary key-type="System.Type" value-type="System.Object">
        <entry value-ref="SsoUrlTemplateRepository">
          <key>
            <expression value="T(Edu3.Data.SubsonicProvider.RepositoryFramework.SsoUrlTemplateRepository, Edu3.Data.SubsonicProvider.RepositoryFramework)"/>
          </key>           
        </entry>
      </dictionary>
    </property>
  </object>

  <object id="SsoUrlTemplateRepository" type="Edu3.Data.SubsonicProvider.RepositoryFramework.SsoUrlTemplateRepository, Edu3.Data.SubsonicProvider.RepositoryFramework" singleton="false"/>

这篇关于配置静态属性与spring.NET的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆