BITKit/Packages/Runtime~/Core/Interfaces/INameProvider.cs

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));
}
}
}