更多地瞭解代碼合同,他們看起來像我想在我的項目中使用的東西。代碼合同和接口實現 - 什麼是1-1關係的原因
鑑於我構建Web服務層(從我們的MVC控制器訪問服務層的抽象)的方式,我發現自己想知道爲什麼無法爲接口的各種排列指定不同的協定實現。
具體而言,我對背後的原因感興趣,只能通過一種通用接口方法以1-1方式指定合同。
這裏是我的代碼結構的一個例子,我的目標是確定我想如何使用代碼合約。我相信有更多經驗的人能夠將我推向正確的方向。
我使用CQRS式的方法使得:
public interface IQuery<in TInput input,out TOutput output>
{
TOutput Invoke(TInput request)
}
public interface IGetSomeUnicornsFromAMagicalLand :
IQuery<int, IEnumerable<Unicorn>>{}
// Implementation
public class GetSomeUnicornsFromMagicLand : IGetSomeUnicornsFromAMagicalLand
{
public IEnumerable<Unicorn> Invoke(int numberOfUnicornsToReturn)
{
// Here I'd like to specify some preconditions on the input,
// specific to type int
return _wizardry
.GetMagicCreature<Unicorn>(numberOfUnicornsToReturn)
.DoMagicalConversionToEnumerable()
}
}
鑑於這種背景下,有理由要指定在執行層面的合同,而不是設計的接口上應用合同抽象類(作爲一種廣義機制)。
- 不能做到這一點的原因是什麼?
- 是否有其他方法可以滿足這個需求?
- 如果我想使用代碼合約,這只是不是一個好的結構?
你是指服務合同還是代碼合同?他們是非常不同的東西。WCF和你的例子讓我想到服務合同 – 2012-07-25 08:41:16
我在引用'System.Diagnostics.Contracts' – 2012-07-25 08:42:33