• 泛型约束使用?有些不知道叫什么好!


    代码
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Threading;
    using System.Data;
    //----------
    using Common;
    using dataAccess;
    using provider;
    using modle;

    namespace Common
    {
        
    public class TestSingle<T> where T : classnew()
        {
    //通用的单一实例类基类,BusinessProvider继承此类
            private static T _Instance;
            
    public static T Instance
            {
                
    get
                {
                    Interlocked.CompareExchange
    <T>(ref _Instance, new T(), null);
                    
    return _Instance;
                }
            }

        }
    }
    namespace dataAccess
    {
        
    public abstract class BusinessProvider<K> : TestSingle<K> where K : BusinessProvider<K>new()
        {
    // 定义个抽象类 
            protected abstract string Database { get; }
            
    public void Delete(DataRow entity)
            {

            }
        }
    }
    namespace provider
    {
    //数据操作,继承自抽象类
        public class UserInfoProvider : dataAccess.BusinessProvider<UserInfoProvider>
        {
            
    public modle.userinfo GetUserInfo()
            {
                modle.userinfo info 
    = new modle.userinfo();
                
    return info;
            } 
        }
    }

    namespace Service
    {
    //调用数据操作类
        public static class UserService
        {
            
    public static modle.userinfo getInfo()
            {//这里Instance.就可以象用使用NET的封装方法那样,直接点出GetUserInfo
                
    return provider.UserInfoProvider.Instance.GetUserInfo();
            }

        }
    }

    namespace modle
    {
        
    public class userinfo
        {
            
    private int _uid;
            
    public int uid
            {
                
    get { return _uid;}
                
    set {_uid=value;}
            }
            
    private string _uname;
            
    public string  username
            {
                
    get { return _uname; }
                
    set { _uname = value; }
            }
        }
    }

    以前没有这么多逻辑来实现,一般也就bll dal model 三层,再复杂就加抽象工厂及接口  辅助工具类加个,一般也就这种模式

    今天在研究一个没接触过的项目代码,Instance.GetUserInfo 这个方法吸引了我,很好奇他的实现。

    于是花了一下午时间去剥离其流程,把主要的代码结构分享给大家

  • 相关阅读:
    Objective-C 资源收藏
    坑爹的高德地图API
    nginx的location root alias指令以及区别
    Java Swing 界面中文乱码问题解决(Idea环境)
    不同的国家/地区与语言缩写代码
    IDEA编译时出现 Information:java: javacTask: 源发行版 1.8 需要目标发行版 1.8
    请重视!请重视!请重视!百度熊掌号之搜索资源平台体验
    php7带来的性能升级
    详解Asp.Net Core 2.1+的视图缓存(响应缓存)
    Xshell5 提示要继续使用此程序,您必须应用最新的更新或使用新版本
  • 原文地址:https://www.cnblogs.com/wyxy2005/p/1774941.html
Copyright © 2020-2023  润新知