我正在尝试设计一个足够灵活的类来绘制关于不同类型数据的数据图表。我是 C# 中的 OOP 新手,所以我正在摸索尝试使用泛型、委托和类的某种组合来实现这一目标。
这是我到目前为止写的课程:
using System;
using System.Collections.Generic;
namespace Charting
{
public class DataChart<T>
{
public Func<T, object> RowLabel { get; set; }
}
}
这就是我试图称呼它的方式:
var model = new DataChart<MyClass>()
{
RowLabel = delegate(MyClass row)
{
return String.Format("{0}-hello-{1}", row.SomeColumn, row.AnotherColumn);
}
};
这种方法的问题是我必须明确地转换 RowLabel发出的对象。我希望我能以某种方式使输出类型成为通用类型并为其添加约束,如下所示:
public class DataChart<T>
{
// The output of the RowLabel method can only be a value type (e.g. int, decimal, float) or string.
public Func<T, U> RowLabel where U : struct, string { get; set; }
}
这可能吗?如果是这样,我该怎么做?提前致谢!