假设我有一个班级foo
和另一个bar
。我想在foo
类中创建一个方法,将foo
数组转换为bar
对象(不是数组),如下所示:
foo[] v1 = new foo[] { };
bar v2 = v1.ToBar();
我该怎么做?
答案 0 :(得分:5)
您可以使用Extension Method:
扩展方法可让您添加"现有类型的方法,无需创建新的派生类型,重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但它们被称为扩展类型的实例方法。对于用C#和Visual Basic编写的客户端代码,调用扩展方法和实际在类型中定义的方法之间没有明显区别。
您需要的只是一个公共静态类来保存您的扩展方法。请注意第一个方法参数之前的this
- 这是使其成为扩展方法的原因。
public static class FooExtensions
{
public static Bar ToBar(this Foo[] source)
{
return new Bar(); // replace with correct logic;
}
}