На расширениях на странице документации Beef говорится следующее:
Расширения могут быть полезны для добавления соответствия интерфейса типам, которые находятся за пределами ваш элемент управления (ie: системные типы или типы, определенные в другой библиотеке).
К сожалению, он не предоставляет пример этого варианта использования, и я не знаю, как действовать дальше.
Предположим, у меня есть интерфейс 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();
}
}
}