public abstract class PropertyImplementation()

in EnvDTE.Client/Impl/ProjectModelImpl/PropertyImpl/PropertyImplementation.cs [7:31]


public abstract class PropertyImplementation(
    [NotNull] DteImplementation dte,
    [NotNull] PropertiesImplementation parent,
    [NotNull] StringPropertyInfo propertyInfo) 
    : ScalarPropertyImplementation(dte, parent, propertyInfo.VisualStudioName)
{
    public override object Value
    {
        get
        {
            var value = GetRawValue(propertyInfo.RiderName);
            return propertyInfo.ParseValue(value);
        }
        set
        {
            if (propertyInfo.IsReadOnly) throw new SetReadOnlyPropertyException();

            var canonicalValue = propertyInfo.GetCanonicalValueOrThrow(value);
            SetRawValue(propertyInfo.RiderName, canonicalValue);
        }
    }

    [CanBeNull] protected abstract string GetRawValue(string name);
    protected abstract void SetRawValue(string name, [CanBeNull] string value);
}