通常,给定类A,派生类DerivedFromA和A的实例,是否有方法从该实例构造DerivedFromA?假设我们说DerivedFromA简单地覆盖了A的一个或多个方法或属性。比方说,我有一个带有CreateA()方法的Container类,它返回A的一个实例,而且我不能或不愿意'您想重写或以其他方式混淆该Container类。我想要做的是取出由Container.CreateA()返回的实例,并将其传递给DerivedFromA(A instanceOfA)构造函数,并将结果对象视为instanceOfA,并使用所有instanceOfA的方法,属性和数据,除了我被覆盖的那些。从父类的实例创建派生类的实例
顺便说一句,有问题的语言是C#,它有所作为。
谢谢。
我不认为你可以直接做到这一点。但是,您可能会使用类似[Castle DynamicProxy](http://www.castleproject.org/)来修改行为 – Rob
每隔一段时间(当我试图写一些复杂的东西时,幸运的是不是经常)我试图让我的头看起来像一个简单而优雅的概念。它似乎应该是一个委托或包装或适配器模式,但我认为你总是遇到阻碍你的事情。 (就像你不能重写的方法或其他东西)。你可能最终会“装饰”比你喜欢的更多的实例,但我想也许C#中最接近的东西是使用扩展方法... – mwardm