MarkupExtension クラスの逆コンパイルは次のようになります。
[TypeForwardedFrom("WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35")]
public abstract class MarkupExtension
{
[TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
protected MarkupExtension()
{
}
public abstract object ProvideValue(IServiceProvider serviceProvider);
}
ご覧のとおり、インターフェイスとして実装することもできましたが、代わりにクラスです。WPF チームがこのように設計したのはなぜですか? また、Silverlight ではインターフェイスです。