Я хотел бы поставить ограничения на общие типы ниже, хотя я не уверен, что можно сделать это так, как я предполагаю.Могу ли я разместить несколько необязательных ограничений для общего типа, где нужно только одно принудительное выполнение?
public interface IMyClass<in TA, in TB>
{
bool MyMethod<TX, TY>(TX argumentX, TY argumentY);
}
public class MyClass<TA, TB> : IMyClass<TA, TB>
{
public bool MyMethod<TX, TY>(TX argumentX, IEnumerable<TY> argumentsY)
{
// DO STUFF
}
}
Типы TX и TY предназначены для представления TA и TB, но должны быть взаимозаменяемыми (поэтому я не мог использовать TA и TB в методе без дублирования кода). Вот как должны функционировать ограничения:
- TX должен быть того же типа, что и TA или TB.
- TY должен быть того же типа, что и TA или TB.
- Если TX - это тот же тип, что и TA, TY должен быть того же типа, что и TB (и v.v.).
Есть ли способ обеспечить соблюдение этого во время разработки с использованием общих ограничений или я должен его реализовать с использованием исключений для отказа во время выполнения?
Я боялся этого. Возможно, мне придется придерживаться другого подхода. Чтобы ответить на ваш вопрос, я хотел бы назвать этот метод двумя разными способами (A, B и B, A) без дублирования кода или для создания экземпляра объекта дважды с помощью инвертированных типов. – yelxe