令我担心的是,我可以为 C# 找到的鸭子类型库都破坏了对象标识,即为Object.ReferenceEquals
鸭子类型对象及其原始对象返回 false。
在 C# 中实现无包装/无代理解决方案似乎是不可能的,尤其是。鉴于这是一个基本的 OO 概念,但希望我错了,任何人都知道是否有办法,尤其是在以后的语言版本中?
编辑,请求了一个代码示例:
public class MyClass
{
private SomeInterface _someInterface;
// Dynamic is possible here but the type safety is helpful
// when having multiple constructors, for example.
public MyClass(AnotherClass c)
{
_someInterface = c.ActLike<SomeInterface>();
Trace.Assert(object.ReferenceEquals(c, _someInterface));
}
}