相关疑难解决方法(0)

Liskov替代原则的例子是什么?

我听说Liskov替换原则(LSP)是面向对象设计的基本原则.它是什么以及它的使用例子是什么?

oop liskov-substitution-principle definition design-principles solid-principles

845
推荐指数
24
解决办法
29万
查看次数

你能用一个好的C#例子来解释Liskov Substitution Principle吗?

你能用一个很好的C#例子解释Liskov替换原理(SOLID的'L'),以简化的方式涵盖原理的所有方面吗?如果真的有可能.

.net c# oop liskov-substitution-principle solid-principles

90
推荐指数
2
解决办法
5万
查看次数

代码合同:如何为通用接口提供合同类?

我想使用代码合同为此通用接口指定合同:

interface IRandomWriteAccessible<T>
{
    T this[uint index] { set; }
    uint Length { get; }
}
Run Code Online (Sandbox Code Playgroud)

文档ContractClass说明在为接口指定合同时使用该属性.但是,编译器会抱怨这个:

[ContractClass(typeof(IRandomWriteAccessibleContract<T>))]
//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^     <-- compiler error
interface IRandomWriteAccessible<T> { … }

[ContractClassFor(typeof(IRandomWriteAccessible<T>))]
//                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^          <-- compiler error
sealed class IRandomWriteAccessibleContract<T> : IRandomWriteAccessible<T> { … }
Run Code Online (Sandbox Code Playgroud)

似乎类型参数不能与属性一起使用.

如何我写我的通用接口一份合同吗?或者代码合同无法实现这一点吗?

.net generics interface code-contracts

33
推荐指数
1
解决办法
2954
查看次数