mirror of https://github.com/dahall/Vanara.git
Removed PROPERTYKEY constructor for PropertyDescription and moved to factory method Create since it can return a 'null'. Changed associated code.
parent
de61f90621
commit
12c150a15b
|
@ -138,7 +138,7 @@ namespace Vanara.Windows.Shell
|
|||
{
|
||||
value = null;
|
||||
if (!ContainsKey(key)) return false;
|
||||
value = new ShellAssociation(key);
|
||||
value = ShellAssociation.CreateFromFileExtension(key);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -23,15 +23,6 @@ namespace Vanara.Windows.Shell
|
|||
/// <summary>Gets the type list.</summary>
|
||||
protected PropertyTypeList typeList;
|
||||
|
||||
/// <summary>Initializes a new instance of the <see cref="PropertyDescription"/> class.</summary>
|
||||
/// <param name="propkey">A valid <see cref="PROPERTYKEY"/>.</param>
|
||||
public PropertyDescription(PROPERTYKEY propkey)
|
||||
{
|
||||
key = propkey;
|
||||
if (PSGetPropertyDescription(propkey, typeof(IPropertyDescription).GUID, out var ppv).Succeeded)
|
||||
iDesc = (IPropertyDescription)ppv;
|
||||
}
|
||||
|
||||
/// <summary>Initializes a new instance of the <see cref="PropertyDescription"/> class.</summary>
|
||||
/// <param name="propertyDescription">The property description.</param>
|
||||
protected internal PropertyDescription(IPropertyDescription propertyDescription)
|
||||
|
@ -40,6 +31,11 @@ namespace Vanara.Windows.Shell
|
|||
key = iDesc.GetPropertyKey();
|
||||
}
|
||||
|
||||
/// <summary>Creates a <see cref="PropertyDescription"/> instance from a specified property key.</summary>
|
||||
/// <param name="propkey">The property key.</param>
|
||||
/// <returns>An associated instance of <see cref="PropertyDescription"/> or <see langword="null"/> if the PROPERTYKEY does not exist in the schema subsystem cache.</returns>
|
||||
public static PropertyDescription Create(PROPERTYKEY propkey) => PSGetPropertyDescription(propkey, typeof(IPropertyDescription).GUID, out var ppv).Succeeded ? new PropertyDescription((IPropertyDescription)ppv) : null;
|
||||
|
||||
/// <summary>Gets a value that describes how the property values are displayed when multiple items are selected in the UI.</summary>
|
||||
public PROPDESC_AGGREGATION_TYPE AggregationType => iDesc?.GetAggregationType() ?? 0;
|
||||
|
||||
|
@ -201,7 +197,7 @@ namespace Vanara.Windows.Shell
|
|||
/// <value>The <see cref="PropertyDescription" />.</value>
|
||||
/// <param name="propkey">The PROPERTYKEY.</param>
|
||||
/// <returns>The <see cref="PropertyDescription" /> for the specified key.</returns>
|
||||
public virtual PropertyDescription this[PROPERTYKEY propkey] => new PropertyDescription(propkey);
|
||||
public virtual PropertyDescription this[PROPERTYKEY propkey] => PropertyDescription.Create(propkey);
|
||||
|
||||
/// <inheritdoc />
|
||||
public virtual void Dispose()
|
||||
|
|
|
@ -183,7 +183,7 @@ namespace Vanara.Windows.Shell
|
|||
{
|
||||
if (!TryGetValue(key, out PROPVARIANT ret))
|
||||
throw new ArgumentOutOfRangeException(nameof(key));
|
||||
return new PropertyDescription(key).FormatForDisplay(ret, flags);
|
||||
return PropertyDescription.Create(key)?.FormatForDisplay(ret, flags);
|
||||
}
|
||||
|
||||
/// <summary>Gets the PROPVARIANT value for a key.</summary>
|
||||
|
@ -283,18 +283,16 @@ namespace Vanara.Windows.Shell
|
|||
|
||||
private bool TryGetValue(PROPERTYKEY key, out PROPVARIANT value)
|
||||
{
|
||||
value = new PROPVARIANT();
|
||||
if (iprops != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
var pv = new PROPVARIANT();
|
||||
iprops.GetValue(key, pv);
|
||||
value = pv;
|
||||
iprops.GetValue(key, value);
|
||||
return true;
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
value = null;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ namespace Vanara.Windows.Shell
|
|||
{
|
||||
private IQueryAssociations qassoc;
|
||||
|
||||
internal ShellAssociation(string ext) { Extension = ext; }
|
||||
private ShellAssociation(string ext) { Extension = ext; }
|
||||
|
||||
public static IReadOnlyDictionary<string, ShellAssociation> FileAssociations { get; } = new ShellAssociationDictionary(true);
|
||||
|
||||
|
|
Loading…
Reference in New Issue