diff options
Diffstat (limited to 'src/mscorlib/shared/System/TypeInitializationException.cs')
-rw-r--r-- | src/mscorlib/shared/System/TypeInitializationException.cs | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/src/mscorlib/shared/System/TypeInitializationException.cs b/src/mscorlib/shared/System/TypeInitializationException.cs new file mode 100644 index 0000000000..9191028346 --- /dev/null +++ b/src/mscorlib/shared/System/TypeInitializationException.cs @@ -0,0 +1,79 @@ +// 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. + +/*============================================================================= +** +** +** +** Purpose: The exception class to wrap exceptions thrown by +** a type's class initializer (.cctor). This is sufficiently +** distinct from a TypeLoadException, which means we couldn't +** find the type. +** +** +=============================================================================*/ + +using System.Globalization; +using System.Runtime.Serialization; + +namespace System +{ + [Serializable] + public sealed class TypeInitializationException : SystemException + { + private String _typeName; + + // This exception is not creatable without specifying the + // inner exception. + private TypeInitializationException() + : base(SR.TypeInitialization_Default) + { + HResult = __HResults.COR_E_TYPEINITIALIZATION; + } + + + public TypeInitializationException(String fullTypeName, Exception innerException) + : this(fullTypeName, SR.Format(SR.TypeInitialization_Type, fullTypeName), innerException) + { + } + + // This is called from within the runtime. I believe this is necessary + // for Interop only, though it's not particularly useful. + internal TypeInitializationException(String message) : base(message) + { + HResult = __HResults.COR_E_TYPEINITIALIZATION; + } + + internal TypeInitializationException(String fullTypeName, String message, Exception innerException) + : base(message, innerException) + { + _typeName = fullTypeName; + HResult = __HResults.COR_E_TYPEINITIALIZATION; + } + + internal TypeInitializationException(SerializationInfo info, StreamingContext context) + : base(info, context) + { + _typeName = info.GetString("TypeName"); + } + + public override void GetObjectData(SerializationInfo info, StreamingContext context) + { + base.GetObjectData(info, context); + info.AddValue("TypeName", TypeName, typeof(String)); + } + + public String TypeName + { + get + { + if (_typeName == null) + { + return String.Empty; + } + return _typeName; + } + } + } +} |