Я использую приведенный ниже код. Он предназначен для определенного типа, чтобы ограничить это всплывающий-Несс в IntelliSense и т.д.Метод расширения для двух разных типов
public static Generic Get<Generic>(this Entity input)
{
return (Generic)input;
}
Теперь я хотел бы использовать те же Получить метод для другого типа (или, быть полностью покрыт, несколько другими типы, но все еще количество исправлений). Поэтому я добавил второй метод, и код выглядит следующим образом.
public static Generic Get<Generic>(this Entity input)
{
return (Generic)input;
}
public static Generic Get<Generic>(this Entity2 input)
{
return (Generic)input;
}
Это мне кажется, что лучше было бы, чтобы держать его в том же теле метода и до сих пор охватывают все расценены типы. Существует ли синтаксис для включения, например, два подписи подписи? Что-то вроде этого псевдо-код ниже.
public static Generic Get<Generic>(this [Entity, Entity2] input)
{
return (Generic)input;
}
Лучший подход, который я могу думать, как показано ниже, состоит из метода ввода для каждого типа и логики в уединенном месте. Это имеет смысл, когда логика обширна, но выглядит излишней, когда это всего лишь строка или две.
public static Generic Get<Generic>(this Entity input)
{
return CommonLogic(input);
}
public static Generic Get<Generic>(this Entity2 input)
{
return CommonLogic(input);
}
private static Generic CommonLogic(Object input)
{
return (Generic)input;
}
Я бы поехал с последним подходом точно или положил его на объект? –
Есть ли что-нибудь общее между 'Entity' и' Entity2'? –
Вы контролируете источник классов EntityX? Если это так, вы можете создать маркер (пустой) интерфейс и использовать только те классы, которые реализуют интерфейс. Затем введите тип этого «метода расширения» этого интерфейса. – user469104