C#之扩展方法 default(T)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using BFWebManage.Helper;
namespace test_20190902
{
    class Program
    {
        static void Main(string[] args)
        {

        }

        void fun1(ActionExecutingContext filterContext)
        {
            filterContext.HttpContext.Session.Get<int>("UserInfo");
        }

    }

    public class ActionExecutingContext
    {
        public HttpContext HttpContext { get; set; }
    }
    //抽象类  //abstract
    public class HttpContext
    {
        public ISession Session { get; set; }

    }

}

namespace BFWebManage.Helper
{
    //属性  扩展类 (属性名+Extensions的静态类)
    public static class SessionExtensions
    {
        public static T Get<T>(this ISession session, string key)
        {
            var value = session.GetString(key);  //Microsoft.AspNetCore.Http.Extensions.dll

            return value == null ? default(T) : default(T); //如果T是int,那么默认值default(int)为0

            //return value == null ? default(T) :
            //                      JsonConvert.DeserializeObject<T>(value);  //把字符串转换为对象
        }
    }
}

namespace Microsoft.AspNetCore.Http
{
    //接口 interface
    public interface ISession
    {

    }
    public static class SessionExtensions
    {
        public static string GetString(this ISession session, string key)
        {
            return "";
        }
    }
}
//扩展 string方法  

public static class A { public static void tets(this string str) { } }
原文地址:https://www.cnblogs.com/enych/p/11447276.html