Есть ли способ проверить, был ли задан экземпляр общего параметра в универсальном методе, когда он может быть либо значением, либо ссылочным типом? Я хотел бы иметь возможность сделать это в универсальном методе, который я должен использовать для сохранения типов, где T - это экземпляр, а K - тип поля идентификатора для этого типа (который все объекты, которые я сохраняю, имеют, поскольку они наследуются от базы тип). Я не хочу ограничивать K как тип значения. Код что-то вроде этого:Тестовое назначение для общего типа C#
public static bool Save<T, K>(T instance)
{
// variable to hold object identifer
K instanceId = default(K);
PropertyInfo[] properties = typeof(T).GetProperties();
// loop through properties of the T
// if property is decorated with a specific attribute then assign to instanceId
// end loop
// check that we have a value assigned to instanceId other than default(K)
// if not return false otherwise continue to persist item
}
Как K может быть проверка типа значение, если оно равно по умолчанию (K) приводит к ошибке, поскольку это зависит от его быть сопоставимы. Есть ли способ обойти это?
Обратите внимание, что у меня возникла необходимость в этом в текущем случае, поставив условие на общий тип T, которое оно должно наследовать от базового типа BaseObject, поэтому мой вопрос касается общей проблемы, связанной с генериками и назначением тестирования.
Спасибо за это, я на самом деле делаю что-то вроде этого, назначая по умолчанию (K) и флаг, но он просто поразил нас как что-то, что вы можете захотеть, чтобы увидеть, было ли значение чем-то отличным от значения по умолчанию (K), но вы не можете сделать это, если не знаете, является ли это значением или ссылочным типом. –
Я обновил вопрос, чтобы более четко отразить эту проблему вокруг проверки, равной по умолчанию (K) –