#c# #blazor #blazor-server-side
#c# #blazor #blazor-на стороне сервера
Вопрос:
Как я могу создать переменную класса (или псевдоним класса) поверх файла и использовать это имя переменной позже в файле? Моя цель — повторно использовать (скопировать) этот класс в нескольких местах и изменить только переменную типа класса поверх файла. В противном случае, каждый раз, когда я копирую этот класс, мне приходится заменять все имена классов в файле, который составляет более тысячи строк. Иногда вы просто пропускаете некоторые из них. Конечно, не все классы имеют одинаковые свойства, и когда я изменю имя класса с Address на Employee, VS editor выделит эти части —
«Сотрудник не содержит члена с именем ‘StreetNo'»
Тогда я позабочусь об этих красных волнистых линиях.
Возможно ли это? Например:
var model = Employee; // Employee is a class
и ниже используйте его следующим образом:
model newInstance = new model();
Я пытался использовать generics (TItem), но я не могу назначить тип заголовка внутри универсального класса:
public class Foo<TItem> where TItem : Employee
{
// where TItem : Employee - this part of code only sets constraint, but doesn't set TItem equal to Employee - (e.g. TItem = Employee)
}
Это очень простой пример компонента razor, который на самом деле является частичным классом. Я просто упростил дело. Есть идеи?
Комментарии:
1. Почему бы просто не использовать find / replace, если вы уже используете повторное копирование / вставку? Не могли бы вы реорганизовать код, чтобы уменьшить количество дублирования?
2. Я чувствую, что вы неправильно истолковали, с кем работают дженерики. Ограничение
where TItem : Employee
делает все, что вам нужно. Использование псевдонима помогает вам в сценариях копирования-вставки, но generics обычно помогает вам вообще избежать копирования и вставки кода. Когда разработчик не может поддерживать инициализацию универсального типа, вы наследуете его от универсального класса с вашей типизированной реализацией, но дженерики будут работать в Blazor с правильным синтаксисом, поэтому покажите сценарий, в котором Generic не работал, чтобы мы могли показать вам правильное решение.3. Вам нужно начать с нуля: почему вы копируете-вставляете в первую очередь?
Ответ №1:
Вы можете попробовать using
псевдонимы:
using Model = Employee;
И далее в коде:
Model newInstance = new Model();