이 인터페이스를 고려하시기 바랍니다있다 학생은 IInitialiazableEntity<IRepository>이고 외관에는 t보다 전문화 된 실제 저장소가 있습니다. 그는 기본 IRepository (즉, 그것은 IMySpecialRepository : IRepository 일 것입니다), IMySpecialRepository을 캐스팅하고 엔티티의 Initi
this msdn documentation에서 공분산 및 반항에 대해서는 out 키워드가 일반적인 매개 변수 공분산을 선언하는 데 사용되는 것으로 설명됩니다. out 키워드를 사용하여 제네릭 형식 매개 변수를 공변수로 선언 할 수 있습니다. 다음 는 out 키워드의 사용의 예를 제공하고, 그 후,이 문은 "있는 그것이 내가 호출해야한다고 생각"contrav
을 감안할 때 : class Contravariant (f :: * -> *) where
contramap :: (a -> b) -> f b -> f a
다음 코드는 거부됩니다. 나는 (조건 자)을 String -> Int 이상의 콘트라 - 매핑 Int -> Bool의 결과로 얻으려고합니다. 내가 틀린 가정을하고있는 것처럼 나는 어리 석다. 오
내가 내 기본 인터페이스 클래스가 있습니다 : public interface IAlgorithm<T> where T : IParams
{
/// <summary>
/// Contains algorythm parameters
/// </summary>
T Params{ get; set; }
}
그리고 publ
나는 가능한지 확실하지 않은 무언가를 얻으려고하고 있으며 나는 조금 붙어있다. public class Client
{
}
public class Server<ClientTemplate>
where ClientTemplate : Client
{
public virtual void ClientConnected(ClientTemplat
나는 다음과 같이 작동 코드의 조각을 가지고 : 나는이 작업을 수행 할 수없는 이유에 혼란 스러워요 그러나 public IEnumerable<ICacheMember> Flubvert(IEnumerable<ICacheMember> members)
{
// do some stuff to members
return members;
나는 슈퍼 클래스에 대한 insertInOrder 기능을 쓰고 있어요 를 삽입 한 후 추상 슈퍼 타입의리스트를 돌려줍니다하지만 방법에서 값 age에 액세스 할 수 없습니다 : abstract class Parent(age: Int)
case class Child1(age: Int) extends Parent(age)
case class Child2(ag
하나는 : 하위 유형에 Contravariance 방법의 인수. 제대로 이해했다면 파생 클래스의 재정의 함수는 반올림 인수 (Supertype 인수)를 허용해야합니다. 그러나 나는이 규칙 뒤에있는 이유를 이해할 수 없다. LSP는 추상화를 달성하기 위해 유형을 수퍼 유형이 아닌 유형과 동적으로 바인딩하기 때문에 파생 클래스의 메소드 인수로 수퍼 유형을 허용