protected ShellProperty <TValue> GetShellProperty(
     ShellRefObject parent)
 {
     return(_shellProperty ??
            (_shellProperty = parent
                              .ShellObject
                              .Properties
                              .GetProperty <TValue>(PropertyKey)));
 }
 public override void SetValueBase(
     ShellRefObject parentBase,
     TValue value)
 {
     SetValue((TParent)parentBase, value);
 }
 public override TValue GetValueBase(
     ShellRefObject parentBase)
 {
     return(GetValue((TParent)parentBase));
 }
 public abstract void SetValueBase(
     ShellRefObject parentBase,
     _TValue value);
 public abstract _TValue GetValueBase(
     ShellRefObject parentBase);