33
|
Aaron Christiansen · 技术社区 · 6 年前 |
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 . |
Robert King · Unity C#语法问题-转换位置 1 年前 |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
i_sniff_ket · 在unity之外使用unity类 2 年前 |