У меня есть следующая ситуация в коде, который я подозреваю, может быть немного dodgey:Доступ к статическим методам на Generic класса в C#
У меня есть класс:
abstract class DataAccessBase<T> : IDataAccess where T : AnotherAbstractClass
Этот класс DataAccessBase
также имеет статический метод завода, который создает экземпляры производных классов само по себе, используя значение перечисления в каком заявлении решить, какой производный тип создания:
static IDataAccess CreateInstance(TypeToCreateEnum)
Теперь Ty ПЭС, полученные из DataAccessBase<T>
сами не являются универсальными, они определяют тип для T:
class PoLcZoneData : DataAccessBase<PoLcZone> // PoLcZone is derived from AnotherAbstractClass
До сих пор я не уверен, если это раздвигает границы эффективного использования дженериков, но то, что я на самом деле беспокоит то, как для доступа к статическому методу CreateInstance()
:
То, как я делаю это на данный момент, - это просто передать любой тип T, где T: AnotherAbstractClass
. В частности, я прохожу AnotherAbstractClass
. Это позволяет компиляции просто отлично, но мне кажется, что передача какого-либо типа в общий класс просто для того, чтобы попасть на статику, немного запутанна.
Я на самом деле упрощена ситуация несколько, как DataAccessBase<T>
это нижний уровень в цепочке наследования, но статические методы завод существует в среднем ряду с классами, такими, как PoLcZoneData
причем наиболее полученных на единственном уровне, который не является универсальным.
Что представляют собой мысли людей о таком расположении?
Какого языку это? –
Извините, его C#. Забыл добавить это в заголовок. – MrLane