Я хочу создать универсальную функцию, которая примет значение некоторого типа в качестве параметра.Создать экземпляр универсального класса на основе типа NULL
- Этот тип может быть нулевым или нет.
- Если значение null, функция возвращает null.
- Если это не нулевой, и это не пустые значения типа, чем функция должна возвращает
MyGenericClass<T>(parameter)
(параметр может быть также установлен собственности нет необходимости использовать конструктор здесь) - Если это не нуль, и это обнуляемым типа, чем функции должны вернуть что-то вроде
MyGenericClass<NotNullType(T)>(parameter.Value)
пример: для параметра int? x, функция должна возвращатьMyGenericClass<int>(x.Value)
.
Вот код, который я написал, чтобы сделать такую операцию, но без успеха:
private MyGenericClass GetMyGenericClassOrNull<T> (T value) {
if (value != null) {
var underlyingType = Nullable.GetUnderlyingType(typeof(T));
if (underlyingType == null) {
return new MyGenericClass<T>(value);
} else {
return new MyGenericClass<underlyingType>(value);
}
}
return null;
}
Как вы можете ожидать строку: return new MyGenericClass<underlyingType>(value);
проблематично здесь.
Есть ли способ сделать такую вещь?
метод Getter, который возвращает недействительным) – Toddams
@Toddams Исправленная ... мне нужно было сделать это компилируется на моей машине?. – xanatos