zoukankan      html  css  js  c++  java
  • 泛型约束使用?有些不知道叫什么好!

    代码
    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 这个方法吸引了我,很好奇他的实现。

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

  • 相关阅读:
    记-码农的“启蒙”之《程序设计语言-实践之路》和《面向对象分析和设计》两书
    记-阅读以及书籍推荐(2014年9月7日更新)
    初探领域驱动设计(1)为复杂业务而生
    异步编程 In .NET
    Windows平台分布式架构实践
    Windows平台分布式架构实践
    一不小心写了个WEB服务器
    MVC5
    从Membership 到 .NET4.5 之 ASP.NET Identity
    bootstrap + requireJS+ director+ knockout + web API = 一个时髦的单页程序
  • 原文地址:https://www.cnblogs.com/wyxy2005/p/1774941.html
Copyright © 2011-2022 走看看