gpt4 book ai didi

c# - 如何扩展同名方法并被调用?

转载 作者:太空宇宙 更新时间:2023-11-03 18:41:30 24 4
gpt4 key购买 nike

我喜欢重写类中的一个方法,所以我用相同的名称和参数扩展了这个方法,但它从来没有被调用过。

http://msdn.microsoft.com/en-us/library/bb383977.aspx

.... 永远不会调用与接口(interface)或类方法具有相同名称和签名的扩展方法。 ....

好吧,我必须接受这个。

我的问题是:对于一个未密封的类(甚至我有源代码),如果我想重写该类的方法 OUTSide (在不同的项目但相同的解决方案中),如何?

[编辑]

这里是建议的方式,使用虚拟/覆盖,运行时没有错误,编译时没有错误,只是永远不会被调用:(,请看一下

在项目 A 中:

public class CachePlan : ICachePlan
{
public virtual CacheSettings GetPlan(ControllerContext filterContext)
{
return null;
}
}

在项目 B 中:

public class CachePlanExtension: CachePlan
{
public override CacheSettings GetPlan(ControllerContext filterContext)
{
CacheSettings ca = new CacheSettings();
ca.IsCachingEnabled = true;
ca.Duration = 100;
return ca;
}
}

但是永远不会被调用,CashPlan.GetPlan 仍然返回 null。有什么想法吗?

最佳答案

您不能“深入”现有类并更改其方法的含义。那将是一个主要的安全漏洞。

关于c# - 如何扩展同名方法并被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8336061/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com