55 lines
1.6 KiB
C#
55 lines
1.6 KiB
C#
using System;
|
|
using System.Linq;
|
|
|
|
namespace BITKit
|
|
{
|
|
public interface INameProvider
|
|
{
|
|
string GetName(object obj, params object[] extensions);
|
|
}
|
|
[Serializable]
|
|
public abstract class NameProvider : INameProvider
|
|
{
|
|
public abstract string GetName(object obj, params object[] extensions);
|
|
protected string GetExtension(params object[] extensions)
|
|
{
|
|
return string.Concat(extensions.Select(x => x.ToString()));
|
|
}
|
|
}
|
|
[Serializable]
|
|
public class StringNameProvider : NameProvider
|
|
{
|
|
public string name;
|
|
public override string GetName(object obj, params object[] extensions)
|
|
{
|
|
|
|
return string.Concat(name, GetExtension(extensions));
|
|
}
|
|
}
|
|
[Serializable]
|
|
public class HashNameProvider : NameProvider
|
|
{
|
|
public override string GetName(object obj, params object[] extensions)
|
|
{
|
|
return string.Concat(obj.GetHashCode().ToString(), GetExtension(extensions));
|
|
}
|
|
}
|
|
[Serializable]
|
|
public class GuidNameProvider:NameProvider
|
|
{
|
|
public override string GetName(object obj, params object[] extensions)
|
|
{
|
|
return string.Concat(Guid.NewGuid().ToString(), GetExtension(extensions));
|
|
}
|
|
}
|
|
[Serializable]
|
|
public class DateTimeNameProvider : NameProvider
|
|
{
|
|
public string timeFormat;
|
|
public override string GetName(object obj, params object[] extensions)
|
|
{
|
|
return string.Concat(DateTime.Now.ToString(timeFormat), GetExtension(extensions));
|
|
}
|
|
}
|
|
}
|