通用的业务编码规则设计实现(四)

2014-11-23 22:06:32 · 作者: · 浏览: 2
nValue)
throw new Exception(string.Format("取得Sequence[{0}]处理中未设置填充的字符", data.SequenceName));
result = result.PadRight(PaddingWidth, PaddingChar);
}
return result;
}
protected abstract string Handle(SequenceContext data);
}
复制代码
ConstSequenceRule.cs
复制代码
public class ConstSequenceRule : SequenceRuleBase
{
protected override string Handle(SequenceContext data)
{
return Ruleva lue string.Empty;
}
}
复制代码
GuidSequenceRule.cs
复制代码
public class GuidSequenceRule : SequenceRuleBase
{
protected override string Handle(SequenceContext data)
{
return Guid.NewGuid().ToString(Ruleva lue);
}
}
复制代码
NumberingSequenceRule.cs
复制代码
public class NumberingSequenceRule : SequenceRuleBase
{
protected override string Handle(SequenceContext data)
{
data.CurrentNo = data.CurrentNo + data.Setp;
return data.CurrentNo.ToString();
}
}
复制代码
SQLSequenceRule.cs
复制代码
public class SQLSequenceRule : SequenceRuleBase
{
protected override string Handle(SequenceContext data)
{
return data.db.Sql(Ruleva lue).QuerySingle();
}
}
复制代码
TimeStampSequenceRule.cs
复制代码
public class TimeStampSequenceRule : SequenceRuleBase
{
protected override string Handle(SequenceContext data)
{
return DateTime.Now.ToString(Ruleva lue);
}
}
复制代码
IClassSequenceHandler.cs
public interface IClassSequenceHandler
{
string Handle(SequenceContext data);
}
ClassSequenceRule.cs
复制代码
public class ClassSequenceRule : SequenceRuleBase
{
private IClassSequenceHandler handler;
protected override string Handle(SequenceContext data)
{
if (handler == null)
{
var type = Type.GetType(Ruleva lue);
if (type == null)
throw new Exception(string.Format("取得Sequence[{0}]函数处理规则中类名设置不正确", data.SequenceName));
if (type.GetInterface("IClassSequenceHandler") == null)
throw new Exception(string.Format("取得Sequence[{0}]函数处理{0}未实现接口IClassSequenceHandler", type.Name));
handler = (IClassSequenceHandler)Activator.CreateInstance(type);
}
return handler.Handle(data);
}
}
复制代码
GoodsNoSequenceRule.cs 商品编码自定义处理示例
复制代码
public class GoodsNoSequenceRule : IClassSequenceHandler
{
public string Handle(SequenceContext data)
{
if (!data.row.ContainsKey("ArtNo"))
throw new Exception("缺少参数ArtNo");
if (!data.row.ContainsKey("Color"))
throw new Exception("缺少参数Color");
if (!data.row.ContainsKey("Size"))
throw new Exception("缺少参数Size");
var list = new List();
list.Add(data.row["ArtNo"].ToString());
list.Add(data.row["Color"].ToString());
list.Add(data.row["Size"].ToString());
return string.Join("-", list);
}
}