// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. namespace System.Windows.Forms.ComponentModel.Com2Interop; internal partial class Com2PropertyDescriptor { private readonly ref struct ValidityScope { #pragma warning disable IDE0036 // Order modifiers (currently broken, required must come first) #pragma warning disable SA1206 // Declaration keywords should follow order required public Com2Properties? Properties { get; init; } #pragma warning restore SA1206 #pragma warning restore IDE0036 [SetsRequiredMembers] public ValidityScope(Com2Properties? properties) { Properties = properties; // Should never be null- but we can't easily express this with null annotation as it is a post // initialization association. Debug.Assert(properties is not null); Properties?.AlwaysValid = Properties.CheckAndGetTarget(checkVersions: false, callDispose: true) is not null; } public void Dispose() { Properties?.AlwaysValid = false; } } } |