У меня есть абстрактный класс FactoryСоздать экземпляр универсального типа, который принимает параметр вторичного общего типа
Завод имеет метод createModel()
public abstract class Factory<T, U>{
public T CreateModel(IDictionary<String, Object> parametersDictionary)
{
T toReturn;
if (ValidateDictionary(parametersDictionary) != true)
return null;
else
{
toReturn = new T(U);
}
return toReturn;
}}
В заявлении еще, я хочу для создания экземпляра Car с объектом CarPart, который я получал бы от вызова другого метода. Эта логика будет применяться к другим подтипам Factory, поэтому я хочу наследовать этот метод. Проблема в том, что я не могу создать экземпляр Car Car с другим общим параметром.
Я огляделся и обнаружил, что могу использовать класс Activator.
(T) Activator.CreateInstance (typeof ( Car), args);
Это, однако, работает, только если у вас есть определенный тип, который вы хотите передать конструктору.
Я также попытался сделать:
общественный завод абстрактный класс, где T: новый()
Но это не позволит мне разобрать ни одного аргумента в конструктор.
Как я могу реализовать этот абстрактный класс?
Edit1: изменили именование разъяснений
Edit2: Для уточнения, U представляет собой структуру, которая содержит aproximatelly 20 параметров, необходимых для создания T. Таким образом, для того, чтобы создать новый T, мне нужно передать его U объект, который инкапсулирует все 20 параметров.
Что такое 'T'? Я могу видеть только определение типа для 'Car' и' CarPart'. Я предполагаю, что 'T' должен быть' Car'. – HimBromBeere
вопрос неясно также, если вам нужна фабрика, то дайте ему только вход CarPart, а внутри CreateModel разрешите, какой объект вы хотите вернуть - Factory должен решить для вас, что он должен вернуть. – Vladimir
Можете ли вы показать «конструктор автомобиля»? Btw: Я думаю, вы confues на имена параметров типа. Я предлагаю вам использовать 'T' и' U' для общего параметра в определении вашего заводского класса, и чем может показаться, что в настоящее время «Автомобиль», похоже, и тот, и другой - имя общего параметра и имя существующего класс. – HimBromBeere