提交 715e6769 编写于 作者: D David

fix: Adjust nullability of ApiExtensibility

上级 a7be3dff
namespace Uno.Foundation.Extensibility;
#nullable enable
using System.Diagnostics.CodeAnalysis;
namespace Uno.Foundation.Extensibility;
/// <summary>
/// Registry for API existensibility providers, used to provide optional
......@@ -61,7 +65,8 @@ public static class ApiExtensibility
/// <param name="owner">An optional owner to be passed to the extension constructor</param>
/// <param name="instance">The instance if the creation was successful</param>
/// <returns>True if the creation suceeded, otherwise False.</returns>
public static bool CreateInstance<T>(object owner, out T instance) where T : class
public static bool CreateInstance<T>(object owner, [NotNullWhen(true)] out T? instance)
where T : class
{
lock (_gate)
{
......@@ -76,4 +81,17 @@ public static class ApiExtensibility
return false;
}
internal static T CreateInstance<T>(object owner)
where T : class
{
if (CreateInstance<T>(owner, out var instance))
{
return instance;
}
else
{
throw new InvalidOperationException($"Unable to find {typeof(T)} extension");
}
}
}
......@@ -11,7 +11,7 @@ namespace Windows.ApplicationModel.DataTransfer
{
private static readonly Lazy<IDataTransferManagerExtension?> _dataTransferManagerExtension = new Lazy<IDataTransferManagerExtension?>(() =>
{
if (ApiExtensibility.CreateInstance(typeof(DataTransferManager), out IDataTransferManagerExtension dataTransferManagerExtension))
if (ApiExtensibility.CreateInstance(typeof(DataTransferManager), out IDataTransferManagerExtension? dataTransferManagerExtension))
{
return dataTransferManagerExtension;
}
......
......@@ -12,10 +12,7 @@ namespace Windows.Devices.Haptics
partial void InitPlatform()
{
if (!ApiExtensibility.CreateInstance(typeof(SimpleHapticsController), out _simpleHapticsControllerExtension))
{
throw new InvalidOperationException($"Unable to find ISimpleHapticsControllerExtension extension");
}
_simpleHapticsControllerExtension = ApiExtensibility.CreateInstance<ISimpleHapticsControllerExtension>(typeof(SimpleHapticsController));
}
public IReadOnlyList<SimpleHapticsControllerFeedback> SupportedFeedback =>
......
......@@ -24,6 +24,8 @@ namespace Windows.Media.Playback
{
this.Log().Error("Unable to create an instance of IMediaPlayerExtension. MediaPlayer will not work.");
}
return;
}
_extension.Events = new MediaPlayerEvents(this);
......
......@@ -8,7 +8,7 @@ namespace Windows.Networking.Connectivity
{
public partial class ConnectionProfile
{
private IConnectionProfileExtension _connectionProfileExtension;
private IConnectionProfileExtension? _connectionProfileExtension;
internal static ConnectionProfile GetInternetConnectionProfile() =>
new ConnectionProfile();
......
......@@ -19,10 +19,7 @@ namespace Windows.UI.ViewManagement
public ApplicationView()
{
if (!ApiExtensibility.CreateInstance(this, out _applicationViewExtension))
{
throw new InvalidOperationException($"Unable to find IApplicationViewExtension extension");
}
_applicationViewExtension = ApiExtensibility.CreateInstance<IApplicationViewExtension>(this);
}
public string Title
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册