#vb.net
Вопрос:
Я пытаюсь получить имя участника и его атрибут. Я использовал StackTrace, GetType(), MemberInfo и т. Д., Но безуспешно.
Class Test Class Test lt;Description("Some description")gt; Property TestProperty1 As Test2 lt;Description("Some description")gt; Property TestProperty2 As Test2 Sub New() TestProperty1 = New Test2("Test text") TestProperty2 = New Test2("") End Sub End Class End Class Class Test2 Property Text As String Sub New(ByVal SomeText As String) Text = SomeText End Sub End Class lt;AttributeUsage(AttributeTargets.Property, Inherited:=False)gt; Class Description : Inherits Attribute Property Description As String Sub New(ByVal Value As String) Description = Value End Sub End Class
Я могу получить метод вызова (вызывающий член), исходный класс TypeInfo и его члены, но я не могу определить, какой именно член является истинным экземпляром моего класса.
Есть ли способ получить имя участника «TestProperty1» класса «Test» из Sub New(ByVal SomeText As String)
класса «Test2»?
Комментарии:
1. Можете ли вы пояснить, что именно вы пытаетесь сделать? Пожалуйста, предоставьте более подробную информацию в примере, который четко демонстрирует, где ваш код не работает и что вы хотите, чтобы произошло.
2. Моя цель состоит в том, чтобы получить имя свойства и доступ к атрибуту свойства. Например. Я объявляю «TestProperty1». Затем я инициализирую это свойство конструктором по умолчанию «New». При инициализации (в теле
sub new
) Я хочу получить объявленное имя свойства этого экземпляра (TestProperty1
). Я попытался вызвать StackTrace, и я вижу вызывающего (класс «Тест») и всех его членов. Но! Я не могу определить, какой член принадлежит к моему экземпляру. Я не видел ни одного уникального параметра параметров-членов типа, с которым я мог бы сравнить эти экземпляры.3. Я не думаю, что это поддерживается. Основная проблема заключается в том, что назначение является отдельным действием от создания нового экземпляра, поэтому на этапе создания конечный пункт назначения недоступен.
4. Я тоже так думаю. Все равно спасибо вам за ответ.
5. Хорошо, если я не могу получить имя, как я могу получить доступ к атрибуту «Описание»? Я тоже этого не вижу. И (второй вопрос) как должен быть создан атрибут, который будет работать как «CallerMemberName»? Я погуглил и ничего не нашел о том, как именно работает «CallerMemberName».