码迷,mamicode.com
首页 > Web开发 > 详细

asp.net中通过单例保存全局参数

时间:2016-06-25 14:55:46      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:

摘要

有这样一个service,需要运行的asp.net站点上,但要保证这个示例是唯一的。这时候就想到使用单例了。

Demo

单例类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Wolfy.SingleDemo.Models
{
    public class SingleParameter
    {
        private static SingleParameter instance;
        private static readonly object obj = new object();
        private static List<string> Names;
        public static SingleParameter CreateInstance()
        {
            if (instance == null)
            {
                lock (obj)
                {
                    if (instance == null)
                    {
                        instance = new SingleParameter();
                    }
                }
            }
            return instance;
        }
        private SingleParameter()
        {
            Names = new List<string>();
        }
        public  void Remove(string name)
        {
            lock (obj)
            {
                for (int i = Names.Count - 1; i >= 0; i--)
                {
                    if (Names[i] == name)
                    {
                        Names.RemoveAt(i);
                    }
                }
            }
        }
        public  void Set(string name)
        {
            lock (obj)
            {
                if (!Names.Contains(name))
                {
                    Names.Add(name);
                }
               
            }
        }
        public  List<string> GetNames()
        {
            lock (obj)
            {
                return Names;
            }
        }
    }
}

测试例子

在视图List中展示添加了哪些name,在视图Add中添加name,通过刷新list查看是否已经保存在了集合中。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Wolfy.SingleDemo.Models;

namespace Wolfy.SingleDemo.Controllers
{
    public class HomeController : Controller
    {
        // GET: Home
        public ActionResult List()
        {
            SingleParameter single = SingleParameter.CreateInstance();
            for (int i = 0; i < 10; i++)
            {
                single.Set((i + 1).ToString());
            }
            return View(single.GetNames());
        }
        public ActionResult Add(string name)
        {
            SingleParameter single = SingleParameter.CreateInstance();
            single.Set(name);
            return View(single.GetNames());
        }
    }
}

结果

技术分享

技术分享

asp.net中通过单例保存全局参数

标签:

原文地址:http://www.cnblogs.com/wolf-sun/p/5616239.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!