public static T GetPropertyStoreWithCreateObject <T>(this IShellItem2 psi, GETPROPERTYSTOREFLAGS flags, object punkCreateObject) where T : class { return((T)psi.GetPropertyStoreWithCreateObject(flags, punkCreateObject, typeof(T).GUID)); }