dan*_*ine 12 c# overriding internal-class
我想在System.Web.Script.Services.ScriptHandlerFactory和内部类中的其他.NET内容中自定义.不幸的是,这是一个内部课程.尝试自定义此类中的方法时,我有哪些选项?
内部关键字表示代码单元(类,方法等)对其所在的程序集是"公共的",但对任何其他程序集都是私有的.
因为你不在同一个集会中,所以你什么也做不了.如果它不是内部的,那么在扩展类时,可以在覆盖的方法上使用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();
}
...
}
}
Run Code Online (Sandbox Code Playgroud)
这可以使您想要实现的目标成为可能,但它不会很漂亮.
归档时间: |
|
查看次数: |
14582 次 |
最近记录: |