|
33
|
| Aaron Christiansen · 技术社区 · 8 年前 |
|
|
1
28
尝试使用库 Impromptu-Interface
这允许您执行以下操作:
|
|
2
7
你可以使用
|
|
|
3
6
这可能很快就会很容易。类型类可引入C#as shapes 您可以在其中定义类的功能,并根据这些功能编写代码 形状 然后将您的代码用于任何匹配的类型,而无需代码的作者声明任何内容,就像您描述的那样。
目前C语言中最接近的事情可能是
有趣的是,它还允许您定义静态成员。 |
|
4
4
我认为这是不可能的。编译器需要查看显式实现接口或类的内容,以便编译器可以确认所有内容都已实现。 如果可以使用重定向来实现,则可能无法实现某些功能。这与所采用的安全方法背道而驰。净额。 |
|
|
5
4
一个选项是在person上创建一个包装器类并将此包装器传递给方法,包装器需要显式实现接口。 |
|
|
6
4
如果您可以控制外部代码,并且愿意包装对象(这里的所有答案似乎都是包装的),那么动态绑定和库(如Impromptu Interface)在我看来,对于本质上是一行代码的东西来说似乎有很多麻烦。
你就完了。
当编译器构建GreetablePerson类时,Person的方法最终会执行接口的隐式实现,并且一切都“正常工作”唯一恼人的是外部的代码必须实例化
如果需求发生了变化,您也有了Person的预先存在的实例,那么像即兴界面这样的东西可能会变得更诱人,但即使如此,您也可能会考虑提供
|
|
|
7
1
在某种程度上,这是一种不相关的情况,在其他语言中通常都会这样做,例如Scala和Haskell。 它被称为使用所谓的“类型类”。类型类本质上允许您定义类型的行为,就好像它显式实现了一个接口一样,而实际上不需要它这样做。你可以了解更多 here . |
|
|
JBryanB · 如何从基本抽象类访问类属性 3 年前 |
|
|
Gabe Tucker · 无法在golang中分配接口对象指针 4 年前 |
|
|
jkone27 · F#-在编译时从字符串生成简单的空类型 8 年前 |
|
|
John Bustos · C#通用工厂模式,不说明通用工厂模式的类型 8 年前 |
|
|
Randall Flagg · 访问propertyinfo中的属性 8 年前 |
|
|
Kacper · 在反映的全名和成员c后的“*”中,“+”是什么意思# 8 年前 |
|
|
tobeypeters · 反射铸造 8 年前 |
|
|
myst02 · 如何在另一个方法之后调用该方法? 8 年前 |