【发布时间】:2017-09-11 17:28:36
【问题描述】:
我想在 C# 中创建一个库,它可以对 Point 对象进行一些工作,但在 C# 中有很多框架,其中有很多 Point 的实现:Point、Vector2f(统一)、Vector2f(单游戏)、Vector3f ...而且我希望我的图书馆能与所有这些人一起使用。
唯一的限制是对象具有属性 X 和 Y 并且 X 和 Y 必须实现 IComparable 接口。问题是我找不到不使用反射的方法来做到这一点(不是我认为的最佳方法)。
我不希望所有类 Point 都从我的接口继承,但我希望它们有 2 个字段/成员 X 和 Y。
有没有办法做到这一点?喜欢
class MyAlgo<T> : where T has X and Y properties {}
【问题讨论】:
-
为什么不让他们继承接口呢?它出什么问题了?你可以在接口中声明你的属性,这会让你的生活更简单
-
@FCin - 他不能让它们从他的接口继承......那些是来自不同框架的现有类
-
@GiladGreen 哦,我误解了他的问题。
-
@FCin - 不用担心 :) 无论如何,这是个好主意
-
大部分是
struct而不是class有很好的理由,所以请记住这一点