/* **************************************************************************** * * Copyright (c) Microsoft Corporation. * * This source code is subject to terms and conditions of the Apache License, Version 2.0. A * copy of the license can be found in the License.html file at the root of this distribution. If * you cannot locate the Apache License, Version 2.0, please send an email to * dlr@microsoft.com. By using this source code in any fashion, you are agreeing to be bound * by the terms of the Apache License, Version 2.0. * * You must not remove this notice, or any other, from this software. * * * ***************************************************************************/ namespace System.Runtime.CompilerServices { /// /// Holds a reference to a value. /// /// The type of the value that the references. public class StrongBox : IStrongBox { /// /// Gets the strongly typed value associated with the /// This is explicitly exposed as a field instead of a property to enable loading the address of the field. /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields")] public T Value; /// /// Initializes a new StrongBox which can receive a value when used in a reference call. /// public StrongBox() { } /// /// Initializes a new with the specified value. /// /// A value that the will reference. public StrongBox(T value) { Value = value; } object IStrongBox.Value { get { return Value; } set { Value = (T)value; } } } /// /// Defines a property for accessing the value that an object references. /// public interface IStrongBox { /// /// Gets or sets the value the object references. /// object Value { get; set; } } }