我想設計一個足夠靈活的類來繪製有關不同種類數據的數據。我是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; }
}
這可能嗎?如果是這樣,我該怎麼做?提前致謝!
'RowLabel'的設計看起來有點奇怪。我只是想知道在你的程序中如何調用RowLabel,因爲它們有不同的返回值類型?也許有可能改進設計? – 2012-07-27 20:32:11
是的,我非常確定有空間來改善事情......我甚至沒有完成任何東西。我只是想知道我提出的一些想法是否可能。 – 2012-07-27 21:09:26
如果RowLabel是爲行提供標籤的函數,它應該返回字符串不應該嗎? – 2012-07-27 23:21:49