using System.Collections.Generic;
|
|
namespace IStation.Untity
|
{
|
/// <summary>
|
/// 唯一名称生成器
|
/// </summary>
|
public class UniqueNameCreater
|
{
|
/// <summary>
|
/// 根据前缀和已经存在的名称生成 (编号从1 开始)
|
/// </summary>
|
/// <param name="prefix"></param>
|
/// <param name="exists"></param>
|
/// <returns></returns>
|
public string Create(string prefix, List<string> exists, string separator = null)
|
{
|
int number = 1;
|
var name = GetFormatName(prefix, separator, number);
|
if (exists == null || exists.Count < 1)
|
return name;
|
while (number < exists.Count + 1)
|
{
|
if (!exists.Contains(name))
|
return name;
|
number++;
|
name = GetFormatName(prefix, separator, number);
|
}
|
return name;
|
}
|
|
/// <summary>
|
/// 根据前缀和已经存在的名称生成 (编号从null 开始 然后是1)
|
/// </summary>
|
/// <param name="prefix"></param>
|
/// <param name="exists"></param>
|
/// <param name="separator"></param>
|
/// <returns></returns>
|
public string Create_Null(string prefix, List<string> exists, string separator = null)
|
{
|
var name = GetFormatName(prefix, separator, null);
|
if (exists == null || exists.Count < 1)
|
return name;
|
int number = 0;
|
while (number < exists.Count + 1)
|
{
|
if (!exists.Contains(name))
|
return name;
|
number++;
|
name = GetFormatName(prefix, separator, number);
|
}
|
return name;
|
}
|
|
//获取格式化名称
|
private string GetFormatName(string prefix, string separator, int number)
|
{
|
return string.Format("{0}{1}{2}", prefix, separator, number);
|
}
|
|
//获取格式化名称
|
private string GetFormatName(string prefix, string separator, int? number)
|
{
|
return string.Format("{0}{1}{2}", prefix, separator, number);
|
}
|
|
}
|
}
|