2

定義が以下のような AmbientClassAttribute の使用は何ですか (C# の場合):

using System;

namespace Metamodel
{
    [AttributeUsage(AttributeTargets.Class, Inherited = true)]
    public sealed class AmbientClassAttribute : System.Attribute
    {
    }
}
4

1 に答える 1

2

これAmbientClassAttributeは、名前が属性クラスを意味するため、次のようにクラス定義の属性として使用されることを意味します。

[AmbientClass]
public class MyClass { }

これは、メタデータを追加するだけです-それはクラスをAmbientClassとしてマークします-それが意味するものは何でも。ただし、それ自体をマークする動作(属性の追加)には、その背後にロジックがありません。そのため、クラスにはメンバーがありません。何もしませ。クラスをアンビエントクラスとしてマークするだけです。

では、それは何のために良いのでしょう?これにより、他のコード、つまり私のクラス(この場合はXAMLプロセッサー)を通過するコードがこのメタデータを認識し、それに応じて処理できるようになります。「XAMLプロセッサー[これを使用して]メンバーの型所有者を判別する」。

于 2012-08-08T07:33:54.243 に答える