首页 > 编程语言 >C# 高级语法混合简单示例(接口、索引器)

C# 高级语法混合简单示例(接口、索引器)

时间:2022-12-29 11:46:41浏览次数:40  
标签:name 示例 C# System new 索引 ParameterName using public

程序集如下

 

 

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    internal class Program
    {
        public static void Main()
        {
            Number number = new Number();
            number.Parameters[NumTransportLayer.Integer].SetValue("123.45");
            number.Parameters[NumTransportLayer.Float].SetValue("123.45");
            Console.ReadKey();
        }
    }
}
Program.cs
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    internal class Number
    {
        private NumParameterCollection m_parameterCollection = new NumParameterCollection();
        public virtual IParameterCollection Parameters => m_parameterCollection;
    }
    public static class NumTransportLayer       //参数传输层
    {
        public static ParameterName Integer => new ParameterName("Integer");
        public static ParameterName Float => new ParameterName("Float");
    }
    internal class NumParameterCollection : IParameterCollection  //参数集合
    {
        ExtensionsIIntegerParameter extensionsIIntegerParameter = new ExtensionsIIntegerParameter();
        ExtensionsIFloatParameter extensionsIFloatParameter = new ExtensionsIFloatParameter();
        public IHandleParameter this[ParameterName name]//实现所引器
        {
            get
            {
                switch (name.Name)
                {
                    case "Integer":
                        return extensionsIIntegerParameter;
                    case "Float":
                        return extensionsIFloatParameter;
                }
                return null;
            }
        }
        public IEnumerator<IParameter> GetEnumerator()
        {
            throw new NotImplementedException();
        }
        IEnumerator IEnumerable.GetEnumerator()
        {
            throw new NotImplementedException();
        }
    }
    public class ExtensionsIIntegerParameter : IHandleParameter
    {
        public void SetValue(string value)//实现接口方法
        {
            Console.WriteLine($"整数:" + ((Int32)Convert.ToDecimal(value)).ToString());
        }
    }
    public class ExtensionsIFloatParameter : IHandleParameter
    {
        public void SetValue(string value)//实现接口方法
        {
            Console.WriteLine("浮点数:" + (Convert.ToDecimal(value)).ToString());
        }
    }
    public interface IParameterCollection :IEnumerable<IParameter>
    {
        IHandleParameter this[ParameterName name] { get; }//声明索引器
    }
    public interface IHandleParameter
    {
        void SetValue(string value);//声明接口方法
    }
    public class ParameterName
    {
        private string m_name;
        public string Name => m_name;
        public ParameterName(string name)
        {
            m_name = name;
        }
    }
    public interface IParameter
    {
        bool IsEmpty();
        string Name { get; }
    }
}
Number.cs

运行结果

 

标签:name,示例,C#,System,new,索引,ParameterName,using,public
From: https://www.cnblogs.com/lizhiqiang0204/p/17012081.html

相关文章