小编Rus*_*sty的帖子

有哪些动态/通用/其他方法可以根据调用者的类型生成返回类型?

在C#,.Net 4的背景下......

给定一个数据源对象,它通过索引从一个双精度数组中提供顶点,其中一个顶点包含10个双精度数,其中包含成员Px,Py,Pz,Nx,Ny,Nz,S,T,U,V,并且后备数组包含全部基于数据源的步幅,偏移和计数属性的顶点成员的任何子集.数据源可以简化为:

  public class DataSource
  {
    private double[] data;
    private int offset, stride, count;

    public double[] ElementAt(int index)
    {
      double[] result = new double[count];
      var relativeIndex =  index * stride + offset;
      Array.Copy(data, relativeIndex, result, 0, count);
      return result;
    }
    .
    .
    .
  }
Run Code Online (Sandbox Code Playgroud)

一些消费者会对double []的返回类型感兴趣,但大多数会以PointNf类型请求数据,其中N是所采用的顶点成员数(Point1f ... Point10f).Point类型的消费者不关心源的步幅,而源为大于其步幅的成员提供零.例如,来自步幅3的源的Point4f将填充数据[i + 0],数据[i + 1],数据[i + 2],0.

显然,DataSource可以公开方法GetPoint1f(int index),GetPoint2f(int index)等.给定固定的返回类型,元素大小等,这些类型的解决方案可能是最好的.但是......

如果像......那样的语法有什么可能的解

Point3f point = SomeDataSource.ElementAt[index];
Run Code Online (Sandbox Code Playgroud)

...或者类似的是被要求/要求/期望的?...利弊?...什么不该做的例子?...严厉的语言?

.net c# generics dynamic

3
推荐指数
1
解决办法
207
查看次数

标签 统计

.net ×1

c# ×1

dynamic ×1

generics ×1