使用 MemberwiseClone 的扩展方法
Extension Method with MemberwiseClone
我有 ApiContext 对象(没有代码),想为它制作扩展方法
代码有什么问题?它说:
cannot use this in static member
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;
}
}
编辑 我最终想要做的是深度克隆到 ApiContext
这是一个具有嵌套对象的复杂对象
嗯,您不能在静态方法中使用 this
。使用您命名为 context:
的变量
public static class MyExtensions
{
public static ApiContext DeepClone(this ApiContext context)
{
ApiContext other = (ApiContext)context.MemberwiseClone();
return other;
}
}
您不能从 class 外部调用 MemberwiseClone
,因为它是 protected
方法。如果你能做到这一点,那么任何人都可以调用任何不符合访问保护精神的受保护方法。做不到。
您可以使用(完全信任)反射来执行此操作,或者您可以通过公开执行您想要的操作的 public
方法使 class ApiContext
合作。
我有 ApiContext 对象(没有代码),想为它制作扩展方法
代码有什么问题?它说:
cannot use this in static member
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;
}
}
编辑 我最终想要做的是深度克隆到 ApiContext
这是一个具有嵌套对象的复杂对象
嗯,您不能在静态方法中使用 this
。使用您命名为 context:
public static class MyExtensions
{
public static ApiContext DeepClone(this ApiContext context)
{
ApiContext other = (ApiContext)context.MemberwiseClone();
return other;
}
}
您不能从 class 外部调用 MemberwiseClone
,因为它是 protected
方法。如果你能做到这一点,那么任何人都可以调用任何不符合访问保护精神的受保护方法。做不到。
您可以使用(完全信任)反射来执行此操作,或者您可以通过公开执行您想要的操作的 public
方法使 class ApiContext
合作。