默认对象访问器(对象= a而不是Object.value = a),内部限制了字符串

时间:2019-02-03 23:43:37

标签: c# string operator-overloading extension-methods

我正在尝试创建一个可以代替标准String对象使用的String对象。由于我将大量使用此“ LimitedString”,因此我的计划是创建一个保存Int / MaxLength和String / Value的对象。

由于将大量使用它,因此创建对象后唯一重要的是值(它在内部处理Length),我希望能够使用以下命令设置其“值” 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可以正常工作,但是我不能反过来工作。

0 个答案:

没有答案