Средство доступа к объектам по умолчанию (Object = a вместо Object.value = a), внутренне ограничивающее строку - PullRequest
0 голосов
/ 04 февраля 2019

Я пытаюсь создать объект 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, работает, но я не могу заставить его работать наоборот.

...