FeatureSwitchDefinitionAttribute Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Belirtilen genel statik Boole salt okunur özelliğinin ada göre belirtilen özellik anahtarına karşılık geldiğini gösterir.
public ref class FeatureSwitchDefinitionAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Property, Inherited=false)]
public sealed class FeatureSwitchDefinitionAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Property, Inherited=false)>]
type FeatureSwitchDefinitionAttribute = class
inherit Attribute
Public NotInheritable Class FeatureSwitchDefinitionAttribute
Inherits Attribute
- Devralma
- Öznitelikler
Örnekler
if (Feature.IsSupported)
Feature.Implementation();
public class Feature
{
[FeatureSwitchDefinition("Feature.IsSupported")]
internal static bool IsSupported => AppContext.TryGetSwitch("Feature.IsSupported", out bool isEnabled) ? isEnabled : true;
internal static Implementation() => ...;
}
Uygulama proje dosyasında aşağıdaki özellik ayarlarıyla kırpıldığında, Feature.IsSupported olarak falsekabul edilir ve Feature.Implementation kod kaldırılır.
<ItemGroup>
<RuntimeHostConfigurationOption Include="Feature.IsSupported" Value="false" Trim="true" />
</ItemGroup>
Açıklamalar
IL yeniden yazarları ve derleyicileri, belirtilen özelliğin dönüş değerini özellik anahtarının değeriyle değiştirmek için bu özniteliği kullanabilir.
Özellik anahtarının değeri yalnızca uygulama düzeyinde belirtilebilir ve uygulamanın tamamını etkiler. Uygulamanın parçası olan bir kitaplığın özellik anahtarının açılmasını gerektirdiği ancak bunu uygulama yazarıyla iletişim kurmasının mümkün olmadığı durumlara girmek mümkündür.
Farklı uygulama yapılandırmaları özellik anahtarının farklı değerlerine sahip olabileceğinden ve tüm kod yollarının beklendiği gibi çalıştığından emin olmak zor olabileceğinden özellik anahtarları birim testini ve kod paylaşımını karmaşık hale getirmektedir.
Bu nedenle API'leri herhangi bir özellik anahtarı olmadan kırpmanın doğal olarak gerçekleşebileceği şekilde yapılandırmak tercih edilir. Özellik anahtarlarının kullanımı, kırpmanın gerçekleşmesi gereken durumlar için ayrılmalıdır, ancak API'leri doğal olarak kırpmaya izin verecek şekilde değiştirmek uygun değildir.
Oluşturucular
| Name | Description |
|---|---|
| FeatureSwitchDefinitionAttribute(String) |
Yeni bir FeatureSwitchDefinitionAttribute sınıfı örneği başlatır. belirtilen özellik anahtarı adıyla. |
Özellikler
| Name | Description |
|---|---|
| SwitchName |
Belirtilen özelliğin değerini sağlayan özellik anahtarının adı. |
| TypeId |
Türetilmiş bir sınıfta uygulandığında, bu Attributeiçin benzersiz bir tanımlayıcı alır. (Devralındığı yer: Attribute) |
Yöntemler
| Name | Description |
|---|---|
| Equals(Object) |
Bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değer döndürür. (Devralındığı yer: Attribute) |
| GetHashCode() |
Bu örneğin karma kodunu döndürür. (Devralındığı yer: Attribute) |
| GetType() |
Geçerli örneğin Type alır. (Devralındığı yer: Object) |
| IsDefaultAttribute() |
Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin değerinin türetilmiş sınıf için varsayılan değer olup olmadığını gösterir. (Devralındığı yer: Attribute) |
| Match(Object) |
Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değer döndürür. (Devralındığı yer: Attribute) |
| MemberwiseClone() |
Geçerli Objectbasit bir kopyasını oluşturur. (Devralındığı yer: Object) |
| ToString() |
Geçerli nesneyi temsil eden bir dize döndürür. (Devralındığı yer: Object) |