MST
星途 面试题库

面试题:C# 可扩展性方法与属性访问器的交互场景

假设你有一个类 `MyClass` 包含一个属性 `MyProperty`,现在需要为 `MyClass` 类型创建一个可扩展性方法 `EnhanceProperty`,该方法要基于对 `MyProperty` 的不同取值,执行不同的增强逻辑,描述实现思路并给出大致代码框架。
13.1万 热度难度
编程语言C#

知识考点

AI 面试

面试题答案

一键面试

实现思路

  1. 首先,需要在扩展方法所在的静态类中定义该扩展方法。
  2. 扩展方法的第一个参数必须使用 this 关键字修饰,且类型为要扩展的 MyClass 类型,这样才能表明这是对 MyClass 的扩展。
  3. 在扩展方法内部,通过判断 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 {
            // 其他情况的增强逻辑
        }
    }
}

以上代码框架中 someValue1someValue2 等需替换为实际要判断的值。不同编程语言实现扩展方法的方式略有不同,以上仅为示例。