面试题答案
一键面试实现思路
- 首先,需要在扩展方法所在的静态类中定义该扩展方法。
- 扩展方法的第一个参数必须使用
this
关键字修饰,且类型为要扩展的MyClass
类型,这样才能表明这是对MyClass
的扩展。 - 在扩展方法内部,通过判断
MyProperty
的不同取值,执行相应的增强逻辑。
大致代码框架(以 C# 为例)
public static class MyClassExtensions
{
public static void EnhanceProperty(this MyClass myClass)
{
if (myClass.MyProperty == someValue1)
{
// 执行针对 someValue1 的增强逻辑
}
else if (myClass.MyProperty == someValue2)
{
// 执行针对 someValue2 的增强逻辑
}
else
{
// 其他情况的增强逻辑
}
}
}
public class MyClass
{
public object MyProperty { get; set; }
}
若使用 Java 实现,大致代码如下:
public class MyClass {
private Object myProperty;
public Object getMyProperty() {
return myProperty;
}
public void setMyProperty(Object myProperty) {
this.myProperty = myProperty;
}
}
public class MyClassEnhancer {
public static void enhanceProperty(MyClass myClass) {
if (myClass.getMyProperty().equals(someValue1)) {
// 执行针对 someValue1 的增强逻辑
} else if (myClass.getMyProperty().equals(someValue2)) {
// 执行针对 someValue2 的增强逻辑
} else {
// 其他情况的增强逻辑
}
}
}
以上代码框架中 someValue1
和 someValue2
等需替换为实际要判断的值。不同编程语言实现扩展方法的方式略有不同,以上仅为示例。