#c# #.net #vb.net #class
#c# #.net #vb.net #класс
Вопрос:
Я искал общий вопрос, но не смог найти никакого решения даже после поиска в Google. Может быть, я неправильно ищу?
Можно ли узнать, из какого класса был создан объект? Например: в коде Visual Basic:
У меня есть класс,
Public Class dummyA
End Class
У меня есть другой класс,
Public Class dummyMain
Dim dmmA As New dummyA
End Class
Могу ли я проверить dummyA
, был ли объект создан из dummyMain?
Ответьте с помощью c # или VB.Net было бы здорово. Спасибо.
Ответ №1:
Самый простой способ — иметь перегруженный конструктор и передать в него владельца.
public class DummyA
{
public DummyA(object owner)
{
var createdByDummyMain = owner is DummyMain;
}
}
а затем выполните
public class DummyMain
{
public DummyMain()
{
var dmmA = new DummyA(this);
}
}
Существует также это, но это не даст вам именно то, что вы хотите. Есть и другие предложения, которые касаются, StackFrame
но это ненадежно из-за оптимизации JIT.
Комментарии:
1. И обратите внимание, что это редко будет хорошей идеей для типа
owner
to beObject
, особенно за пределами сценариев отладки. В большинстве случаев тип должен быть чем-то более конкретным, что обеспечит любое средство, которое вы хотите, чтобы класс использовал (скорее всего, какое-тоInterface
).