使用MemberwiseClone的扩展方法

时间:2015-08-09 11:18:28

标签: c# .net extension-methods

我有ApiContext对象(没有代码)并想为它制作扩展方法

代码有什么问题?它说:

  

不能在静态成员中使用它

ApiContext位于Singleton模式

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;
    }
}   

编辑我最终要做的是深度克隆到ApiContext这是一个带有嵌套对象的复杂对象

2 个答案:

答案 0 :(得分:1)

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

您可以使用(完全信任)反射来执行此操作,或者您可以通过公开执行您想要的ApiContext方法来使类public合作。

答案 1 :(得分:-1)

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

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