Covariance si contravariance si CQRS si interfaces – partea 1 din 3

Pentru Covariance si Contravariance cititi : http://blogs.msdn.com/b/csharpfaq/archive/2010/02/16/covariance-and-contravariance-faq.aspx
Pentru CQRS cititi http://martinfowler.com/bliki/CQRS.html

Acum partea intii – covarianta:

Sa zicem ca vrem sa implementam o parte din CQRS pe interfete:


public interface IFind
        {

        }

        public class ImplementationFind: IFind
        {

        }

        public interface IQuery<T>
            where T : class,IFind, new()
        {
            T Find(int id);

        }
         public class BaseServiceQuery<T> : IQuery<T>
            where T : IFind
        {


            public T Find(int id)
            {
                return new T();
            }
        }

Deci ImplementationFind implementeaza IFind
Ce credeti, se compileaza rindul de mai jos:

IQuery<IFind> da = new BaseServiceQuery<ImplementationFind>();
Console.Write(da.Find(1).GetType());

Daca nu ( si nu!) ce trebuie adaugat ?
( nu, nu va ginditi la DI / IoC – e acelasi lucru)

Raspuns:

{

؛(pı ʇuı)puıɟ ʇ
}
puıɟı : ʇ ǝɹǝɥʍ
<ʇ ʇno>ʎɹǝnbı ǝɔɐɟɹǝʇuı ɔıןqnd

( intrati pe http://www.fliptext.info/ si inversati textul )

Acum ginditi-va si de ce e asa de important un cuvint in C# – de tipul out.

Data viitoare contravarianta

Leave a Reply

Your email address will not be published. Required fields are marked *