Сообщество программистов Autodesk в СНГ

ADN Club => Revit API => Тема начата: enot от 11-12-2019, 14:44:11

Название: ExtensibleStorage . Задать тип поля
Отправлено: enot от 11-12-2019, 14:44:11
есть fieldType, (это поле метода)
Код - C# [Выбрать]
  1. public void ReadValue (Type fieldType)
  2. {
  3.    var value = entity.Get<fieldType>(fieldName, displayUnitType); // как мне правильно передать fieldType  
  4. }
  5.  
Название: Re: ExtensibleStorage . Задать тип поля
Отправлено: Александр Игнатович от 11-12-2019, 14:55:39
Например для строкового поля extensible storage-а:

Код - C# [Выбрать]
  1. .Get<string>(...

Вообще рекомендую поискать VCExtensibleStorage от Вити Чекалина (поиском на github, например), вроде и здесь на форуме было (может, в статьях здесь на сайте), у Тэммика точно статейка в блоге была.

Если не считывать/записывать Extensible storage-и в тысячи элементов, то нормально работает, с его помощью просто описывается как сама схема, так и чтение/запись данных.
Название: Re: ExtensibleStorage . Задать тип поля
Отправлено: enot от 11-12-2019, 15:01:53
fieldType у меня ElementId (вообще могут быть разные)

не знаю как записать , чтобы внутри метода он определился как  .Get<ElementId>

 есть идея (на случай, если это нельзя в одном методе как то сделать автоопределением типа данных), написать несколько методов с одинаковыми именами но на вход подавать разный тип данных...
в С# такая штука как переопределение метода автоматом определит подходящий. Хотя не, так не будет работать
Название: Re: ExtensibleStorage . Задать тип поля
Отправлено: Александр Игнатович от 11-12-2019, 15:08:10
Как-то примерно так, например

Код - C# [Выбрать]
  1. public void ReadValue<T> (string fieldName)
  2. {
  3.    var value = entity.Get<T>(fieldName); // как мне правильно передать fieldType  
  4. }
Название: Re: ExtensibleStorage . Задать тип поля
Отправлено: enot от 11-12-2019, 15:22:53
то есть я тип данных должен буду указывать при вызове метода?
ReadValue<ElementId> (fieldName) ?
Название: Re: ExtensibleStorage . Задать тип поля
Отправлено: Александр Игнатович от 11-12-2019, 15:23:56
Да