首先新建一个类,实现一个IFailuresPreprocessor接口
class FailuresPreprocessor : IFailuresPreprocessor
{
public FailureProcessingResult PreprocessFailures(FailuresAccessor failuresAccessor)
{
IList<FailureMessageAccessor> lstFme = failuresAccessor.GetFailureMessages();
if (lstFme.Count == 0) return FailureProcessingResult.Continue;
foreach (FailureMessageAccessor item in lstFme)
{
if (item.GetSeverity() == FailureSeverity.Warning)
{
failuresAccessor.DeleteWarning(item);
}
if (item.GetSeverity() == FailureSeverity.Error)
{
if(item.HasResolutions())
{
failuresAccessor.ResolveFailure(item);
return FailureProcessingResult.ProceedWithRollBack;
}
}
}
return FailureProcessingResult.Continue;
}
}
然后在外部命令里,开启事务的位置进行处理
Transaction transaction1 = new Transaction(doc,"editFloor");
FailureHandlingOptions failure = transaction1.GetFailureHandlingOptions();
failure.SetFailuresPreprocessor(new FailurePreprocessor());
transaction1.SetFailureHandlingOptions(failure);
transaction1.Start();
·
·
·
transaction1.Commit();