使用MemberwiseClone扩展方法

本文关键字:方法 扩展 MemberwiseClone 使用 | 更新日期: 2023-09-27 18:06:59

我有ApiContext对象(没有代码),并希望为它做扩展方法

代码有什么问题?上面写着:

不能在静态成员

中使用

ApiContext驻留在单例模式

public sealed class EbayProxySdk
{
    private static EbayProxySdk _instance = null;
    private static readonly Object LockObj = new object();
    public ApiContext Context;
.
.
.
}
public static class MyExtensions
{
    public static ApiContext DeepClone(this ApiContext context)
    {
        ApiContext other = (ApiContext)this.MemberwiseClone();
        return other;
    }
}   

EDIT我最终要做的是深度克隆到ApiContext,这是一个复杂的对象嵌套的对象

使用MemberwiseClone扩展方法

您不能从类外部调用MemberwiseClone,因为它是protected方法。如果你可以这样做,那么任何人都可以调用任何受保护的方法,这是不符合访问保护的精神的。不可能。

您可以使用(完全信任)反射来做到这一点,或者您可以通过公开public方法来使ApiContext类合作。

你不能在静态方法中使用this。使用您命名的变量context:

public static class MyExtensions
{
    public static ApiContext DeepClone(this ApiContext context)
    {
        ApiContext other = (ApiContext)context.MemberwiseClone();
        return other;
    }
}