/* ****************************************************************************
*
* 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; }
}
}