网上演练
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

80 lines
2.3 KiB

#if NET20 || NET30 || NET35 || !NET_4_6
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System.Runtime.ConstrainedExecution;
using System.Security;
//using System.Security.Permissions;
namespace System.Diagnostics.Contracts
{
public sealed class ContractFailedEventArgs : EventArgs
{
//internal Exception ThrownDuringHandler;
private readonly string _condition;
private readonly ContractFailureKind _failureKind;
private readonly string _message;
private readonly Exception _originalException;
private bool _handled;
private bool _unwind;
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
public ContractFailedEventArgs(ContractFailureKind failureKind, string message, string condition, Exception originalException)
{
Contract.Requires(originalException == null || failureKind == ContractFailureKind.PostconditionOnException);
_failureKind = failureKind;
_message = message;
_condition = condition;
_originalException = originalException;
}
public string Condition
{
get { return _condition; }
}
public ContractFailureKind FailureKind
{
get { return _failureKind; }
}
// Whether the event handler "handles" this contract failure, or to fail via escalation policy.
public bool Handled
{
get { return _handled; }
}
public string Message
{
get { return _message; }
}
public Exception OriginalException
{
get { return _originalException; }
}
public bool Unwind
{
get { return _unwind; }
}
[SecurityCritical]
//[SecurityPermission(SecurityAction.LinkDemand, Unrestricted = true)]
public void SetHandled()
{
_handled = true;
}
[SecurityCritical]
//[SecurityPermission(SecurityAction.LinkDemand, Unrestricted = true)]
public void SetUnwind()
{
_unwind = true;
}
}
}
#endif