![]() |
1
1
您可以通过以下接口来模拟:
然后在
|
![]() |
2
9
虽然其他答案中提到了解决这个问题的最佳方法,但我回答了问题标题(这将处理
这一技巧使得clr方法调度机制能够找到
|
![]() |
3
2
是否可以确定方法x在运行时是否被重写?是的,但正如你已经指出的,你可能不想这样做。您可以使用此.getType()+反射魔力在派生类中查找重写当前基的已定义方法。这是非常昂贵和棘手的,因为您必须考虑重载、深度层次结构和其他有趣的通用问题。 编辑 要想在不使用反射的情况下实现这一点,请参见Mehrdad的回答。 你应该做些什么?您应该将这个方法分为两部分。
例如
|
![]() |
4
1
你可以这样做:
这将强制所有派生类型重写方法。最好不要在执行时检查这类事情——使用抽象类型和抽象方法,您允许编译器为您执行提升操作,以确保类型的所有使用者都重写这些方法。
如果有类型是
但这种方法将任何潜在的错误从编译时移动到执行时,这是不惜一切代价最好避免的。 |
![]() |
5
1
当然!你必须运用反省。
保持在我的思考是有点慢,所以你不想执行,比如说,一百万次每秒。 |
![]() |
6
1
似乎prevalidate()和postvalidate()更适合作为不同类型的扩展模型。将这些作为委托或满足特定接口的完整对象注入的提供者模型可能更适合您希望能够在运行时检查这些服务的状态。 |
![]() |
7
0
问自己以下问题:
重点是,从您的设计来看,您应该真正创建一个抽象类,使用抽象方法,而不是虚拟方法。而且,从你的描述来看,这也是你想要达到的目标。
通过这种方式,派生类被强制定义这些方法。 |
![]() |
8
0
Jaredpar的替代方法是好的,尽管事件在可扩展性方面比较干净。
|
![]() |
Emopusta · 从后端到前端的图像路径不工作 2 年前 |
![]() |
Asdrubal Hernandez · Linq查询特定数组索引出错 2 年前 |
![]() |
Niyazi Babayev · 如何在表达式中动态应用表达式? 2 年前 |
|
Dansih · .Net核心自定义身份验证方案 2 年前 |
![]() |
lolorekkk · 面板插入。NET WinForm 2 年前 |