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