diff --git a/PInvoke/Ole/Ole32/WTypes.PROPERTYKEY.cs b/PInvoke/Ole/Ole32/WTypes.PROPERTYKEY.cs
index 1d44a96d..71170692 100644
--- a/PInvoke/Ole/Ole32/WTypes.PROPERTYKEY.cs
+++ b/PInvoke/Ole/Ole32/WTypes.PROPERTYKEY.cs
@@ -17,7 +17,7 @@ namespace Vanara.PInvoke
/// Specifies the FMTID/PID identifier that programmatically identifies a property. Replaces SHCOLUMNID.
[PInvokeData("Wtypes.h", MSDNShortId = "bb773381")]
[StructLayout(LayoutKind.Sequential, Pack = 4)]
- public partial struct PROPERTYKEY : IComparable
+ public partial struct PROPERTYKEY : IComparable, IEquatable
{
private static Dictionary revIndex;
@@ -36,7 +36,13 @@ namespace Vanara.PInvoke
public override string ToString() => GetCononicalName() ?? ReverseLookup(this) ?? $"{Key:B} {Id}";
- public override bool Equals(object obj) => obj is PROPERTYKEY propertykey && Equals(Key, propertykey.Key) && Id == propertykey.Id;
+ public override bool Equals(object obj) => obj is PROPERTYKEY other && Equals(other);
+
+ public bool Equals(PROPERTYKEY other) => Equals(Key, other.Key) && Id == other.Id;
+
+ public static bool operator ==(PROPERTYKEY pk1, PROPERTYKEY pk2) => pk1.Equals(pk2);
+
+ public static bool operator !=(PROPERTYKEY pk1, PROPERTYKEY pk2) => !pk1.Equals(pk2);
public override int GetHashCode() => new { Key, Id }.GetHashCode();