在牛肉文档的扩展页面上,它说:
扩展可用于将接口一致性添加到您无法控制的类型(即:系统类型或在另一个库中定义的类型)。
不幸的是,它没有提供该用例的示例,我不知道如何继续。
假设我有一个界面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();
}
}
}