程序集如下
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