Xamarin.TVOS SDK API diff: 12.1.0 vs 12.2.1

mscorlib.dll

Namespace System

Type Changed: System.String

Added methods:

public bool Contains (char value);
public bool Contains (char value, StringComparison comparisonType);
public bool Contains (string value, StringComparison comparisonType);
public bool EndsWith (char value);
public int GetHashCode (StringComparison comparisonType);
public int IndexOf (char value, StringComparison comparisonType);
public static string Join<T> (char separator, System.Collections.Generic.IEnumerable<T> values);
public static string Join (char separator, object[] values);
public static string Join (char separator, string[] value);
public static string Join (char separator, string[] value, int startIndex, int count);
public string Replace (string oldValue, string newValue, StringComparison comparisonType);
public string Replace (string oldValue, string newValue, bool ignoreCase, Globalization.CultureInfo culture);
public string[] Split (char separator, StringSplitOptions options);
public string[] Split (string separator, StringSplitOptions options);
public string[] Split (char separator, int count, StringSplitOptions options);
public string[] Split (string separator, int count, StringSplitOptions options);
public bool StartsWith (char value);
public string Trim (char trimChar);
public string TrimEnd ();
public string TrimEnd (char trimChar);
public string TrimStart ();
public string TrimStart (char trimChar);

Type Changed: System.StringComparer

Added method:

public static StringComparer FromComparison (StringComparison comparisonType);

Namespace System.Buffers

Removed Type System.Buffers.IRetainable

Removed Type System.Buffers.MemoryHandle

Namespace System.Collections

Type Changed: System.Collections.BitArray

Added methods:

public BitArray LeftShift (int count);
public BitArray RightShift (int count);

Namespace System.Collections.ObjectModel

Type Changed: System.Collections.ObjectModel.KeyedCollection`2

Added method:

public bool TryGetValue (TKey key, out TItem item);

Namespace System.Globalization

New Type: System.Globalization.GlobalizationExtensions

public static class GlobalizationExtensions {
	// methods
	public static System.StringComparer GetStringComparer (this CompareInfo compareInfo, CompareOptions options);
}

Namespace System.Reflection

Type Changed: System.Reflection.BindingFlags

Added value:

DoNotWrapExceptions = 33554432,

Namespace System.Reflection.Emit

New Type: System.Reflection.Emit.DynamicMethod

public abstract class DynamicMethod : System.Reflection.MethodInfo, System.Reflection.ICustomAttributeProvider, System.Runtime.InteropServices._MemberInfo, System.Runtime.InteropServices._MethodBase {
	// constructors
	public DynamicMethod (string name, System.Type returnType, System.Type[] parameterTypes);
	public DynamicMethod (string name, System.Type returnType, System.Type[] parameterTypes, bool restrictedSkipVisibility);
	public DynamicMethod (string name, System.Type returnType, System.Type[] parameterTypes, System.Reflection.Module m);
	public DynamicMethod (string name, System.Type returnType, System.Type[] parameterTypes, System.Type owner);
	public DynamicMethod (string name, System.Type returnType, System.Type[] parameterTypes, System.Reflection.Module m, bool skipVisibility);
	public DynamicMethod (string name, System.Type returnType, System.Type[] parameterTypes, System.Type owner, bool skipVisibility);
	public DynamicMethod (string name, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type returnType, System.Type[] parameterTypes, System.Reflection.Module m, bool skipVisibility);
	public DynamicMethod (string name, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type returnType, System.Type[] parameterTypes, System.Type owner, bool skipVisibility);
	// properties
	public override System.Reflection.MethodAttributes Attributes { get; }
	public override System.Reflection.CallingConventions CallingConvention { get; }
	public override System.Type DeclaringType { get; }
	public bool InitLocals { get; set; }
	public override System.Reflection.MethodImplAttributes MethodImplementationFlags { get; }
	public override string Name { get; }
	public override System.Reflection.ParameterInfo ReturnParameter { get; }
	public override System.Type ReturnType { get; }
	// methods
	public ILGenerator GetILGenerator ();
	public ILGenerator GetILGenerator (int streamSize);
	public override System.Reflection.ParameterInfo[] GetParameters ();
}

Namespace System.Runtime

New Type: System.Runtime.ProfileOptimization

public static class ProfileOptimization {
	// methods
	public static void SetProfileRoot (string directoryPath);
	public static void StartProfile (string profile);
}

Namespace System.Runtime.CompilerServices

Type Changed: System.Runtime.CompilerServices.ConditionalWeakTable`2

Added interfaces:

System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>
System.Collections.IEnumerable

New Type: System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder

public struct AsyncValueTaskMethodBuilder {
	// properties
	public System.Threading.Tasks.ValueTask Task { get; }
	// methods
	public void AwaitOnCompleted<TAwaiter, TStateMachine> (ref TAwaiter awaiter, ref TStateMachine stateMachine);
	public void AwaitUnsafeOnCompleted<TAwaiter, TStateMachine> (ref TAwaiter awaiter, ref TStateMachine stateMachine);
	public static AsyncValueTaskMethodBuilder Create ();
	public void SetException (System.Exception exception);
	public void SetResult ();
	public void SetStateMachine (IAsyncStateMachine stateMachine);
	public void Start<TStateMachine> (ref TStateMachine stateMachine);
}

New Type: System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable

public struct ConfiguredValueTaskAwaitable {
	// methods
	public ConfiguredValueTaskAwaitable.ConfiguredValueTaskAwaiter GetAwaiter ();

	// inner types
	public struct ConfiguredValueTaskAwaiter, ICriticalNotifyCompletion, INotifyCompletion {
		// properties
		public bool IsCompleted { get; }
		// methods
		public void GetResult ();
		public virtual void OnCompleted (System.Action continuation);
		public virtual void UnsafeOnCompleted (System.Action continuation);
	}
}

New Type: System.Runtime.CompilerServices.ValueTaskAwaiter

public struct ValueTaskAwaiter, ICriticalNotifyCompletion, INotifyCompletion {
	// properties
	public bool IsCompleted { get; }
	// methods
	public void GetResult ();
	public virtual void OnCompleted (System.Action continuation);
	public virtual void UnsafeOnCompleted (System.Action continuation);
}

Namespace System.Threading

Type Changed: System.Threading.LazyInitializer

Added method:

public static T EnsureInitialized<T> (ref T target, ref object syncLock, System.Func<T> valueFactory);

New Type: System.Threading.Lock

public class Lock {
	// constructors
	public Lock ();
	// methods
	public void Acquire ();
	public void Release ();
}

New Type: System.Threading.LockHolder

public struct LockHolder, System.IDisposable {
	// methods
	public virtual void Dispose ();
	public static LockHolder Hold (Lock l);
}

Namespace System.Threading.Tasks

Type Changed: System.Threading.Tasks.Task

Added methods:

public static System.Threading.Tasks.Task<TResult> CreateUnwrapPromise<TResult> (Task outerTask, bool lookForOce);
public virtual void MarkAborted (System.Threading.ThreadAbortException e);

Type Changed: System.Threading.Tasks.ValueTask`1

Added constructor:

public ValueTask`1 (System.Threading.Tasks.Sources.IValueTaskSource<TResult> source, short token);

Removed method:

public static System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder<TResult> CreateAsyncMethodBuilder ();

Added method:

public System.Threading.Tasks.ValueTask<TResult> Preserve ();

New Type: System.Threading.Tasks.ValueTask

public struct ValueTask, System.IEquatable<ValueTask> {
	// constructors
	public ValueTask (Task task);
	public ValueTask (Sources.IValueTaskSource source, short token);
	// properties
	public bool IsCanceled { get; }
	public bool IsCompleted { get; }
	public bool IsCompletedSuccessfully { get; }
	public bool IsFaulted { get; }
	// methods
	public Task AsTask ();
	public System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable ConfigureAwait (bool continueOnCapturedContext);
	public override bool Equals (object obj);
	public virtual bool Equals (ValueTask other);
	public System.Runtime.CompilerServices.ValueTaskAwaiter GetAwaiter ();
	public override int GetHashCode ();
	public ValueTask Preserve ();
	public static bool op_Equality (ValueTask left, ValueTask right);
	public static bool op_Inequality (ValueTask left, ValueTask right);
}

New Namespace System.Threading.Tasks.Sources

New Type: System.Threading.Tasks.Sources.IValueTaskSource

public interface IValueTaskSource {
	// methods
	public virtual void GetResult (short token);
	public virtual ValueTaskSourceStatus GetStatus (short token);
	public virtual void OnCompleted (System.Action<object> continuation, object state, short token, ValueTaskSourceOnCompletedFlags flags);
}

New Type: System.Threading.Tasks.Sources.IValueTaskSource`1

public interface IValueTaskSource`1 {
	// methods
	public virtual TResult GetResult (short token);
	public virtual ValueTaskSourceStatus GetStatus (short token);
	public virtual void OnCompleted (System.Action<object> continuation, object state, short token, ValueTaskSourceOnCompletedFlags flags);
}

New Type: System.Threading.Tasks.Sources.ValueTaskSourceOnCompletedFlags

[Serializable]
[Flags]
public enum ValueTaskSourceOnCompletedFlags {
	FlowExecutionContext = 2,
	None = 0,
	UseSchedulingContext = 1,
}

New Type: System.Threading.Tasks.Sources.ValueTaskSourceStatus

[Serializable]
public enum ValueTaskSourceStatus {
	Canceled = 3,
	Faulted = 2,
	Pending = 0,
	Succeeded = 1,
}

System.Core.dll

Namespace System.Security.Cryptography

New Type: System.Security.Cryptography.IncrementalHash

public sealed class IncrementalHash : System.IDisposable {
	// properties
	public HashAlgorithmName AlgorithmName { get; }
	// methods
	public void AppendData (byte[] data);
	public void AppendData (byte[] data, int offset, int count);
	public static IncrementalHash CreateHMAC (HashAlgorithmName hashAlgorithm, byte[] key);
	public static IncrementalHash CreateHash (HashAlgorithmName hashAlgorithm);
	public virtual void Dispose ();
	public byte[] GetHashAndReset ();
}

System.dll

Namespace System

New Type: System.StringNormalizationExtensions

public static class StringNormalizationExtensions {
	// methods
	public static bool IsNormalized (this string strInput);
	public static bool IsNormalized (this string strInput, Text.NormalizationForm normalizationForm);
	public static string Normalize (this string strInput);
	public static string Normalize (this string strInput, Text.NormalizationForm normalizationForm);
}

Namespace System.Diagnostics

New Type: System.Diagnostics.StackFrameExtensions

public static class StackFrameExtensions {
	// methods
	public static IntPtr GetNativeIP (this StackFrame stackFrame);
	public static IntPtr GetNativeImageBase (this StackFrame stackFrame);
	public static bool HasILOffset (this StackFrame stackFrame);
	public static bool HasMethod (this StackFrame stackFrame);
	public static bool HasNativeImage (this StackFrame stackFrame);
	public static bool HasSource (this StackFrame stackFrame);
}

Namespace System.Net

Type Changed: System.Net.FtpWebRequest

Added properties:

public override Cache.RequestCachePolicy CachePolicy { get; set; }
public static Cache.RequestCachePolicy DefaultCachePolicy { get; set; }

Namespace System.Text.RegularExpressions

Type Changed: System.Text.RegularExpressions.CaptureCollection

Added interfaces:

System.Collections.Generic.ICollection<Capture>
System.Collections.Generic.IEnumerable<Capture>
System.Collections.Generic.IList<Capture>
System.Collections.Generic.IReadOnlyCollection<Capture>
System.Collections.Generic.IReadOnlyList<Capture>
System.Collections.IList

Added method:

public virtual void CopyTo (Capture[] array, int arrayIndex);

Type Changed: System.Text.RegularExpressions.GroupCollection

Added interfaces:

System.Collections.Generic.ICollection<Group>
System.Collections.Generic.IEnumerable<Group>
System.Collections.Generic.IList<Group>
System.Collections.Generic.IReadOnlyCollection<Group>
System.Collections.Generic.IReadOnlyList<Group>
System.Collections.IList

Added method:

public virtual void CopyTo (Group[] array, int arrayIndex);

Type Changed: System.Text.RegularExpressions.MatchCollection

Added interfaces:

System.Collections.Generic.ICollection<Match>
System.Collections.Generic.IEnumerable<Match>
System.Collections.Generic.IList<Match>
System.Collections.Generic.IReadOnlyCollection<Match>
System.Collections.Generic.IReadOnlyList<Match>
System.Collections.IList

Added method:

public virtual void CopyTo (Match[] array, int arrayIndex);

Type Changed: System.Text.RegularExpressions.Regex

Modified fields:

 ---[NonSerialized]
 ---public readonly System.TimeSpan InfiniteMatchTimeout;

Modified methods:

-protected bool UseOptionR ()
+protected bool UseOptionR ()

New Namespace System.Security

New Type: System.Security.SecureStringMarshal

public static class SecureStringMarshal {
	// methods
	public static IntPtr SecureStringToCoTaskMemAnsi (SecureString s);
	public static IntPtr SecureStringToCoTaskMemUnicode (SecureString s);
	public static IntPtr SecureStringToGlobalAllocAnsi (SecureString s);
	public static IntPtr SecureStringToGlobalAllocUnicode (SecureString s);
}

System.Runtime.Serialization.dll

Namespace System.Runtime.Serialization

New Type: System.Runtime.Serialization.DataContractSerializerExtensions

public static class DataContractSerializerExtensions {
	// methods
	public static ISerializationSurrogateProvider GetSerializationSurrogateProvider (this DataContractSerializer serializer);
	public static void SetSerializationSurrogateProvider (this DataContractSerializer serializer, ISerializationSurrogateProvider provider);
}

New Type: System.Runtime.Serialization.ISerializationSurrogateProvider

public interface ISerializationSurrogateProvider {
	// methods
	public virtual object GetDeserializedObject (object obj, System.Type targetType);
	public virtual object GetObjectToSerialize (object obj, System.Type targetType);
	public virtual System.Type GetSurrogateType (System.Type type);
}

System.Xml.Linq.dll

Namespace System.Xml.XPath

New Type: System.Xml.XPath.XDocumentExtensions

public static class XDocumentExtensions {
	// methods
	public static IXPathNavigable ToXPathNavigable (this System.Xml.Linq.XNode node);
}

Xamarin.TVOS.dll

Namespace Foundation

Type Changed: Foundation.NSErrorException

Added property:

public override string Message { get; }

Namespace ObjCRuntime

Type Changed: ObjCRuntime.Constants

Modified fields:

-public const string Version = "12.1.0";
+public const string Version = "12.2.1";

Type Changed: ObjCRuntime.Runtime

Added method:

public static void ReleaseBlockOnMainThread (IntPtr block);