2016-05-16 2 views
0

Я борюсь. Получили свойства типа ISet (String), и мне нужно присвоить их значение.Создать экземпляр ISet (из строки)

.Add() 

бросает пустую ошибку канала, поскольку он не инстанцирован, пытается создать экземпляр, присвоить значение и передавать с множеством(), но

Activator.CreateInstance(Type.GetType(MyClass.MyProperty) 

бросает пустую ссылку. Ни это решение Visual Basic: dynamically create objects using a string as the name не работает, я выводил список, а ISet просто нет.
Я пытался решить это какое-то время.

+2

Класс, который реализует свойство, должен инициализировать базовый объект, а не потребительский код. 'ISet' - это интерфейс, поэтому вы можете использовать его для объявления объектов и приведения к нему, но вы не можете создавать экземпляры из них; они просто являются договором о том, какие методы и свойства реализует данный тип (класс). – Plutonix

ответ

1

Интерфейсы не полностью определяют объекты. Они определяют только одну часть объекта, поэтому у вас недостаточно информации из интерфейса ISet(Of String), чтобы создать экземпляр.

Что вам нужно сделать, это найти тип, который реализует интерфейс, и создать один из них ... HashSet(Of String) и SortedSet(Of String) оба будут работать.

+0

Спасибо, New HashSet (Of String) работал – Stan

Смежные вопросы