C#通用无限个开关通用类(SwitchHelper)
我们平时在做项目时,很多时候会用到很多开关,或者是正负,对错的字段
如果每一个都去定义一个字段,是非常的浪费,而且成本会越来越高,
有没有办法可以一个字段直接完成的,其他是有
比如 1011010这样一串数据
第一个1是系统开关
第二个0是电源开关
以此类推
有多少个开关我们就写一个多长的字符串即可
不同的开关只要取自己对应的位置就能知道是开还是关,有数字的好处是还可以设置不仅是开和关,还可以是多种选项的
那么这个我们只需要写三个方法即可
第一个方法是根据输入的位置得取开关的当前值
[C#] 纯文本查看 复制代码 /// <summary>
/// 根据整数得到字符串开关
/// </summary>
/// <param name="Switch">整数,数据库取值</param>
/// <returns></returns>
public static string GetStringSwitch(int Switch)
{
return Switch.ToString().PadLeft(3, '0');
}
第二个方法验证开关是否正确
[C#] 纯文本查看 复制代码 /// <summary>
/// 验证开关状态
/// </summary>
/// <param name="strSwitch">开关字符串</param>
/// <param name="index">要验证的开关所在位置 从0开始</param>
/// <returns>开为True,关为False</returns>
public static Boolean CheckSwitch(string strSwitch, int index)
{
if (strSwitch.Length > index && strSwitch.Length == 3 && strSwitch.Substring(index, 1) == "0")
{
return true;
}
return false;
}
第三个,就是更新开关的方法了
[C#] 纯文本查看 复制代码 /// <summary>
/// 修改开关字符串
/// </summary>
/// <param name="strSwitch">开关字符串</param>
/// <param name="index">要修改的位置</param>
/// <param name="Switch">要修改为的值</param>
/// <returns></returns>
public static SwitchReslt UpdateStrSwitch(string strSwitch, int index, int Switch)
{
SwitchReslt result = null;
try
{
string newSwithc = string.Empty;
for (int i = 0; i < strSwitch.Length; i++)
{
string oneStr = strSwitch.Substring(i, 1);
if (i == index)
{
oneStr = Switch.ToString();
}
newSwithc += oneStr;
}
if (newSwithc != strSwitch)
{
result = new SwitchReslt()
{
Status = true,
StrSwitch = newSwithc,
Switch = Convert.ToInt32(newSwithc)
};
}
}
catch { }
return result;
}
用到的Model类如下
[C#] 纯文本查看 复制代码
public class SwitchReslt
{
public Boolean Status { get; set; }
public string StrSwitch { get; set; }
public int Switch { get; set; }
}
好了,大家有需要用到的直接拿走不谢
[C#] 纯文本查看 复制代码 /// <summary>
/// 开关类解析算法
/// </summary>
public class SwitchHelper
{
/// <summary>
/// 根据整数得到字符串开关
/// </summary>
/// <param name="Switch">整数,数据库取值</param>
/// <returns></returns>
public static string GetStringSwitch(int Switch)
{
return Switch.ToString().PadLeft(3, '0');
}
/// <summary>
/// 验证开关状态
/// </summary>
/// <param name="strSwitch">开关字符串</param>
/// <param name="index">要验证的开关所在位置 从0开始</param>
/// <returns>开为True,关为False</returns>
public static Boolean CheckSwitch(string strSwitch, int index)
{
if (strSwitch.Length > index && strSwitch.Length == 3 && strSwitch.Substring(index, 1) == "0")
{
return true;
}
return false;
}
/// <summary>
/// 修改开关字符串
/// </summary>
/// <param name="strSwitch">开关字符串</param>
/// <param name="index">要修改的位置</param>
/// <param name="Switch">要修改为的值</param>
/// <returns></returns>
public static SwitchReslt UpdateStrSwitch(string strSwitch, int index, int Switch)
{
SwitchReslt result = null;
try
{
string newSwithc = string.Empty;
for (int i = 0; i < strSwitch.Length; i++)
{
string oneStr = strSwitch.Substring(i, 1);
if (i == index)
{
oneStr = Switch.ToString();
}
newSwithc += oneStr;
}
if (newSwithc != strSwitch)
{
result = new SwitchReslt()
{
Status = true,
StrSwitch = newSwithc,
Switch = Convert.ToInt32(newSwithc)
};
}
}
catch { }
return result;
}
}
public class SwitchReslt
{
public Boolean Status { get; set; }
public string StrSwitch { get; set; }
public int Switch { get; set; }
}
|