2013-04-09 66 views
0

我正在处理一个包含对象及其扩展的基类的二进制文件。我想实例化这个对象,但是为了使用我自己的基类实现。我可以在基类中看到知道需要扩展的方法。如何使用不同的基础实现实例化扩展类?

问题是基类实现了一种名为“WriteFeed”的方法,该方法需要网络连接并将数据写入网络流。我希望它使用我的实现,所以WriteFeed可以将数据转储到控制台。

我无法更改现有的二进制文件,只能使用和实例化它。

+3

我无法想象有什么办法可以做到这一点。 – 2013-04-09 01:09:19

回答

0

我唯一的建议是使用复合方法。我不确定这是否会满足您的需求,或者您具有可见性访问权限,但可能有效。

public class SomeBaseClassInSomeBinary 
{ 
    protected virtual void Method1(...) {} 
    protected virtual void WriteFeed (...) {} 
} 

public class SomeClassInSomeBinary: SomeBaseClassInSomeBinary 
{ 
    protected override void Method1(...) { base.Method1(...); } 
    protected override void WriteFeed (...) { base.WriteFeed (...); } 
} 

// **** your code 
public class MyCode: SomeBaseClassInSomeBinary 
{ 
    private SomeClassInSomeBinary Composite = new SomeClassInSomeBinary(); 

    protected override void Method1(...) { Composite.Method1(...); } 
    protected override void WriteFeed (...) { your implementation } 
} 

}

所有你需要做的就是现在用你的对象,而不是。

希望这会有所帮助。

+0

谢谢你的想法,但我不认为这将起作用。问题是实例化的类调用它自己的base.WriteFeed(),这就是为什么我需要交换基类的实现。 – flacnut 2013-04-09 01:37:07

+0

没问题。真的很难看到你的问题/关注。我一直在这里提供帮助。 – code5 2013-04-11 17:01:17

+0

我实际上做的只是改变基类,使其没有任何专门的'写'方法,而是传递一个写适配器(或者如果你喜欢这个术语,则是处理程序)。这意味着当我在本地测试时,我会传入一个测试适配器,并且在生产中我会传入生产适配器代码。 – flacnut 2013-04-12 01:09:40