ビーフのドキュメントの拡張機能のページには、次のように書かれています。
拡張機能は、制御外の型 (つまり、システム型または別のライブラリで定義された型) にインターフェイスの適合性を追加するのに役立ちます。
残念ながら、そのユースケースの例は提供されておらず、どうすればよいかわかりません。
インターフェイスがあるとしますIFooBarable
:
interface IFooBarable
{
void FooBar();
}
そして、この拡張メソッドをシステム ライブラリ タイプに追加したいと思いますSystem.DateTime
。
namespace System
{
extension DateTime
{
public void FooBar()
{
String s = scope .();
ToLongTimeString(s);
Console.WriteLine("This dateTime ({}) has FooBarred", s);
}
}
}
... DateTime が実装できるようにIFooBarable
。
DateTime
の実装として処理するようにコンパイラに指示できる方法があると思われますIFooBarable
か? たとえば、次のようにコンパイルします。
using System;
interface IFooBarable
{
void FooBar();
}
/* extension code here */
namespace Program
{
public class Program
{
static void Main()
{
IFooBarable t = DateTime.Now;
t.FooBar();
}
}
}