我想在System.Web.Script.Services.ScriptHandlerFactory和内部类中的其他.NET内容中自定义.不幸的是,这是一个内部课程.尝试自定义此类中的方法时,我有哪些选项?
您可能会发现这篇近期文章很有启发性.基本上,它表示你不能覆盖任何标记的东西internal
,并且源代码就像它获得的权威一样.你可以期待的最好的是一种扩展方法.
内部关键字表示代码单元(类,方法等)对其所在的程序集是"公共的",但对任何其他程序集都是私有的.
因为你不在同一个集会中,所以你什么也做不了.如果它不是内部的,那么在扩展类时,可以在覆盖的方法上使用new关键字(隐藏原始实现).
简而言之:你是SOL.
我能想到的唯一能做的就是编写一个代理类,其中一个私有字段是你想要扩展的类,你实现它的所有方法并代理它们的调用.这样你仍然可以自定义输出,但你必须使用你的课程,并考虑它标记为内部,我不确定没有一些严重的黑客可能.
using System; ... using System.Web.Script.Services namespace MyGreatCompany.ScriptServices { public class MyScriptHandlerFactory /* implement all the interfaces */ { private ScriptHandlerFactory internalFactory; public MyScriptHandlerFactory() { internalFactory = new ScriptHandlerFactory(); } ... } }
这可以使您想要实现的目标成为可能,但它不会很漂亮.