我有一个抽象的class Map<T> : ITexturable
,但是我需要将Map限制为bool,byte和float,有什么方法可以确保这一点?
我以为我会读一些有关将此作为解决方案的内容
Map<float> : Map<float>
作为重载类本身的一种方法,但是我得到的只是一个错误。
Map<T> : ITexturable
的目的是生成过程图
地图将生成黑白形状的地图。Map将生成高度图,温度图,湿度图和压力图。地图将生成地形/生物群落地图。
计划是创建ShapeMap : Map<bool>
,HeightMap : Map<float>
和TerrainMap : Map<byte>
等...但是我不希望我的地图做更多的事情,因此我需要限制输入的类型或使地图无法访问。
我没有与此相关的代码,因为我不知道从哪里开始编写此代码。
bool
,byte
和float
选择过程的更多信息,我可以提出一个更清晰的解决方案。通常只能限制接口或值类型等。最好的选择是,没有编程自己的(运行时)逻辑,这些约束是:struct
,unmanaged
,notnull
或IComparable
或IEquatable
之类的接口。如果需要更多控制,可以检查构造函数中的类型。但不能在编译时阻止。
要限制bool
,byte
和float
类型,最接近的是where T: unmanaged
或where T: struct
子句。
class Map<T>
where T : struct,
IComparable,
IFormattable,
IConvertible,
IComparable<T>,
IEquatable<T>
{ }
要了解更多,您可以查看本文:where (generic type constraint) (C# Reference)