我有一個如下定義的通用接口(IAmMeasurable
)。我有一個該接口的實現(Sales
)。我試圖創建一個通用類(Fact
),這樣我可以實例化它,像這樣:如何避免在實例化通用類時指定冗餘類型
var todaySales = new Fact<Sales>();
不幸的是,我不得不做到以下幾點:
var todaySales = new Fact<Sales, decimal>();
因爲Sales
這似乎尷尬的是定義爲IAmMeasurable<decimal>
。該decimal
中的Sales
public interface IAmMeasurable<TValue> where TValue : struct
{
}
public class Sales : IAmMeasurable<decimal>
{
}
public class Fact<TMeasure, TValue>
where TMeasure : IAmMeasurable<TValue>
where TValue : struct
{
public TValue Observed { get; set; }
}
使用暗示也許這僅僅是一個語言的限制?還是有另一種方法來構建這個,以實現我的目標?或者我根本沒有正確地考慮這個問題?
在我看來,有些東西是可衡量的,它們是以特定類型衡量的(銷售額以美元計量,以小數表示)。事實是一些措施的觀察。我觀察到今天的銷售額是100美元(100米)。
Obvioulsy'銷售:IAmMeasurable,IAmMeasurable ,IAmMeasurable '會迷惑你的'Fact'如果你在尋找什麼讓... –
啊!我沒有意識到一個類可以實現兩次相同的接口,提供不同的TValue。有什麼辦法來限制嗎? – SFun28