C# ランタイム機能の操作: 追加と変更
C# では、属性は重要な役割を果たし、メタデータを提供し、オブジェクトの動作を強化します。しかし、これらの機能は実行時に操作できるのでしょうか?答えは複雑で、特定のシナリオによって異なります。
実行時に機能を追加
System.Reflection
名前空間を使用すると、実行時にオブジェクトまたはクラスに属性を追加できます。リフレクション メカニズムにより、アセンブリ、型、メンバーに関連するメタデータへのアクセスと変更が可能になります。次のコードは、実行時にクラスに属性を追加する方法を示しています。
<code class="language-csharp">using System; using System.Reflection; class Program { static void Main(string[] args) { // 获取类的类型 Type type = typeof(MyClass); // 创建特性的新实例 Attribute attribute = new MyAttribute { SomeValue = "Test" }; // 将特性添加到类型 type.CustomAttributes.Add(new CustomAttributeData(attribute)); } } [AttributeUsage(AttributeTargets.Class)] public class MyAttribute : Attribute { public string SomeValue { get; set; } }</code>
実行時にプロパティ値を変更する
実行時のプロパティの追加とは異なり、C# は既存のプロパティの値の変更を直接サポートしません。ただし、属性を削除して、必要な値を持つ新しい属性を追加することはできます。あるいは、 クラスを使用して、クラスとオブジェクトに関連付けられたプロパティにアクセスし、変更することもできます。 TypeDescriptor
機能とプロパティ グリッド、またはそれらを必要とするその他のツールとの間のギャップを埋めるメカニズムを提供します。 TypeDescriptor
以上がC# 属性は実行時に動的に追加および変更できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。