C #: Могу ли я написать открытый класс MyGenericClass <T>, где T: MyClass И реализовать интерфейс? - PullRequest
0 голосов
/ 28 октября 2010

Я вижу это:

public class MyGenericClass<T> where T:IComparable { }

и у меня есть это:

public class ProductRepository : IRepository<Product> { }

Как бы вы написали что-то подобное?

public class ProductRepository<T> where T : Product : IRepository<Product> {}

После всего этого я подумал, что мог бы просто создать один класс Repository, а затем внедрить в него тип, включая контекст данных. Но мы преследуем простейшую вещь сначала правильно? LOL

Обновление:

Если бы я сделал это, как бы я выбрал, какую сущность использовать в контейнере сущностей (или в контексте)? (Третья строка снизу начинается с возврата _dc.Versions., Который должен был бы как-то переключиться на возврат _dc.T.)

public class Repository<T> : IRepository<T> where T : class
{   
    # region Constructor
    private AdSketchEntities _dc { get; set; } // Data Container (Data Context)
    public Repository() : this(new AdSketchEntities()) { }
    public Repository(AdSketchEntities myDC)
    {   this._dc = myDC; 
    }
    # endregion

    public T Add(T entity)
    {
        _dc.Versions.AddObject(entity);
        return _dc.Versions.Where(n => n.custid == entity.custid &&
                       n.versionid == entity.versionid).SingleOrDefault();
    }

1 Ответ

3 голосов
/ 28 октября 2010

Вы можете указать несколько ограничений , например:

public class ProductRepository<T>
    where T : Product, IRepository<Product>
{
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...