Я пытаюсь создать объект String, который можно использовать вместо стандартного объекта String.Поскольку я буду использовать это «LimitedString» много, я планировал создать Объект, который содержит Int / MaxLength и String / Value.
Поскольку он будет использоваться много и единственное, что имеет значение послеобъект был создан, это значение (оно обрабатывает длину внутренне), я хочу иметь возможность установить его "значение", используя InitializedObject = String () вместо InitializedObject.Value = String ()
все, что у меня естьпопробовал до сих пор дал мне ошибки.Это то, что я не могу сделать в C #?
Вот код для объекта:
public class LimitedString{
private int _maxlength;
private string _value;
public LimitedString(int length, string text = "")
{
_maxlength = length;
_value = text;
}
private string Value
{
get { return _value; }
set { _value = _value.Truncate(_maxlength); }
}
//Operators
public static implicit operator string(LimitedString ls)
{
return ((ls == null) ? null : ls.Value);
}
public static implicit operator LimitedString(string text)
{
//Needs to return the LimitedString Object That is being manipulated
return text == null ? null : new LimitedString(text.Length, text);
}}
Я также использую это расширение строки
public static string Truncate(this string value, int maxLength)
{
if (string.IsNullOrEmpty(value)) return value;
return value.Length <= maxLength ? value : value.Substring(0, maxLength);
}
Любые предложения будутПримите во внимание, что имейте в виду, что после инициализации объекта он должен сохранить свою максимальную длину, и строка (значение) должна быть доступна только для объекта.Я считаю, что string = Object, работает, но я не могу заставить его работать наоборот.