Рейтинг:
1
OriginalGriff
Вы, кажется, запутались: класс FilterableList имеет методы, которые не связаны с общим параметром. Чтобы получить доступ к методам CodeElement, необходимо указать ограничение на то, какими классами могут быть T:
Public Class FilterableList(Of T As CodeElement)
Inherits List(Of T)
...
Public Sub DoSomething(x As T)
x.MyMethod()
End Sub
End Class
Я пытаюсь отменить функцию GetType (), чтобы получить доступ к статическому методу - вот почему я не считаю, что мне нужен экземпляр.
GetType (CodeElement) возвращает свой тип; могу ли я получить класс этого типа и затем получить доступ к его методам?
Для статических методов вам не нужен GetType
Кодовый элемент.MyStaticMethod()
это все, что вам нужно. Вы можете получить доступ к статическим (совместно используемым в VB talk) методам непосредственно через имя класса и даже получить доступ к методам базового класса таким образом:
Public Class B
Public Shared Sub MyBaseMethod()
End Sub
End Class
Public Class D
Inherits B
Public Shared Sub MyMethod()
End Sub
End Class
Private Sub MyButton_Click(sender As Object, e As EventArgs)
B.MyBaseMethod()
D.MyBaseMethod()
D.MyMethod()
End Sub
[no name]
Давайте возьмем такой пример:
x = GetType(MyCodeElement)
Как получить MyCodeElement из x?
OriginalGriff
- Простите?
В этом нет никакого смысла.
GetType возвращает значение типа Type-и у вас уже есть MyCodeElement, прежде чем вы его вызовете...
Я не пытаюсь быть раздражающим здесь, но мы получаем только то, что вы печатаете для работы, мы не получаем никакого другого контекста, и мы не можем видеть ваш экран, получить доступ к вашему жесткому диску или прочитать ваши мысли. Таким образом, предоставление фрагментов кода одной строки без какого-либо другого контекста на самом деле не помогает нам помочь вам!
[no name]
Тип CodeElement передается через различные классы и методы, и в конечном итоге сам CodeElement выходит за рамки области действия, так что все, что у меня есть, - это его тип.
OriginalGriff
woah, woah - если CodeElement вышел из области видимости, то переменная больше не доступна - и вы не можете получить доступ к экземпляру, который она содержала, если вы не сохранили ее где-то еще.
Я думаю, что вы многое упускаете здесь, и это не помогает нам помочь вам быстрее.
Если CodeElement является типом, то вам не нужен GetType, но вы не можете использовать методы экземпляра класса (или это базовый класс), потому что у вас нет экземпляра для их работы. Вы можете без проблем называть его статическими классами, так как они не требуют экземпляра.
Но чтобы получить экземпляр в "x", вам нужно либо найти существующий экземпляр, либо создать его - вы не можете сделать ничего особенно полезного только с информацией о типе, которую возвращает GetType.
Чего вы на самом деле пытаетесь достичь? Игнорируйте ваши конкретные типы, когда вы отвечаете и используете английский, или все, что я получу, - это еще один контекстно-свободный фрагмент кода, который никому не поможет!
[no name]
Я пытаюсь отменить функцию GetType (), чтобы получить доступ к статическому методу - вот почему я не считаю, что мне нужен экземпляр.
GetType (CodeElement) возвращает свой тип; могу ли я получить класс этого типа и затем получить доступ к его методам?
OriginalGriff
Ответ обновлен
[no name]
Это больно. У меня есть только такой тип. Как мне получить от него урок?
OriginalGriff
У меня на лбу тоже синяки! :смеяться:
Что, если мы вернемся к началу, и вы объясните по-английски, что вы делаете, без участия каких-либо классов, типов или экземпляров? Обзор, как если бы вы объяснялись с матерью по телефону?
[no name]
Я хочу перевернуть GetType().
OriginalGriff
Добавился еще один синяк...
Ты уже говорил мне об этом, пару сообщений назад...
[no name]
Хорошо. Чтобы получить тип класса, вы делаете GetType(MyClass)
Чтобы получить класс, что вы делаете с указанным типом?