gpt4 book ai didi

c# - 创建实现内部接口(interface)的类型

转载 作者:可可西里 更新时间:2023-11-01 09:04:34 26 4
gpt4 key购买 nike

假设我有声明内部接口(interface) IInternalInterface 的程序集。我无权访问此程序集的代码,也无法更改它。如何创建自己的 IInternalInterface 实现?

为什么我需要这个:程序集包含带有 IInternalInterface 实现者列表的类,我的目标是在那里添加我自己的实现。

最佳答案

可以使用远程代理。
请注意,我的回答只是一个草图,可能需要进一步改进。

internal interface IInternalInterface {
void SayHello();
}

// --------------------------------------------------------------
// in another assembly
public class ImplementationProxy : RealProxy, IRemotingTypeInfo {
private readonly MethodInfo method;

public ImplementationProxy(MethodInfo method)
: base(typeof(ContextBoundObject))
{
this.method = method;
}

public override IMessage Invoke(IMessage msg) {
if (!(msg is IMethodCallMessage))
throw new NotSupportedException();

var call = (IMethodCallMessage)msg;
if (call.MethodBase != this.method)
throw new NotSupportedException();

Console.WriteLine("Hi from internals!");
return new ReturnMessage(null, null, 0, call.LogicalCallContext, call);
}

public bool CanCastTo(Type fromType, object o)
{
return fromType == method.DeclaringType;
}

public string TypeName
{
get { return this.GetType().Name; }
set { }
}
}

关于c# - 创建实现内部接口(interface)的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8606412/

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