It’s a dirty job but someone has to do it


Well here is just more of the same, Stephen posted about querying an item to see whether it’s “dirty” or not.  Here is the .NET equivalent. I didn’t actually test these this time so your feedback is welcome.

Visual Basic

Public Function IsItemDirty(ByVal itm As Object) As Boolean
  Dim typeDispatch As Type = itm.GetType()
  Dim dispidIsDirtyMemberName As String = String.Format("[DispID={0}]", _ 
 &HF024)
  Dim retVal As Boolean = False
  Try
    retVal = typeDispatch.InvokeMember(dispidIsDirtyMemberName, _ 
        System.Reflection.BindingFlags.InvokeMethod _ 
        Or System.Reflection.BindingFlags.GetProperty, _
        Nothing, _
        itm, _
        Nothing)
  Catch comEx As System.Runtime.InteropServices.COMException

  End Try
End Sub

 

C#

public bool IsItemDirty(object itm)
{
  Type typeDispatch = itm.GetType();
  string dispidIsItemDirtyMemberName = String.Format("[DispID={0}]", 0xF024);
  bool retVal = false;

  try
  {
    retVal = (bool)typeDispatch.InvokeMember(dispidIsItemDirtyMemberName, 
        System.Reflection.BindingFlags.InvokeMethod |
        System.Reflection.BindingFlags.GetProperty,
        null,
        itm,
        null);
  }
  catch(System.Runtime.InteropServices.COMException comEx)
  {

  }
  return retVal;
}
Comments (0)