如何重载执行相同操作但参数不同的扩展方法

问题描述 投票:0回答:1

我试图防止重复扩展代码 例如 UrlHelper(this SomeDataEventClass e) 和 UrlHelper(this AnotherDataEventClass e)。他们正在做同样的事情,即根据类生成 url。

但是有没有另一种方法可以进一步简化这两个方法,防止方法重复

c# .net-core extension-methods
1个回答
0
投票

您可以在两个类都扩展的基类上创建一个扩展方法。这样就只能使用基类中的字段。或者您需要检查当前正在处理哪种类型,但这会破坏您正在添加的抽象并保证多个实现。

public abstract class BaseClass
{
    public string DomainName { get; set; }
}

public class ClassA : BaseClass
{

}

public class ClassB : BaseClass
{

}

public static class DataExtensions
{
    public static string UrlHelper(this BaseClass baseClass)
    {
        return baseClass.DomainName + ".com";
    }
}

public class SomeLogic
{
    public void DoStuff()
    {
        var a = new ClassA();

        var url = a.UrlHelper();

        var b = new ClassB();

        var urlb =  b.UrlHelper();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.