Я ищу алгоритм, который может получить объект который названный методом, в рамках того метода.
Например:
public class Class1 {
public void Method () {
//the question
object a = ...;//the object that called the method (in this case object1)
//other instructions
}
}
public class Class2 {
public Class2 () {
Class1 myClass1 = new Class1();
myClass1.Method();
}
public static void Main () {
Class2 object1 = new Class2();
//...
}
}
Там какой-либо путь состоит в том, чтобы сделать это?
Очевидно, что я не знаю точных деталей вашей ситуации, но это действительно кажется, что вам нужно немного переосмыслить вашу структуру.
Это легко сделать, если правильно структурировать наследование.
Подумайте о том, чтобы посмотреть на абстрактный класс и классы, которые наследуются от упомянутого абстрактного класса. Возможно, Вы даже сможете сделать то же самое с интерфейсами.
Вы можете перейти к текущей трассировке стека в коде и подняться на один шаг вверх. http://msdn.microsoft.com/en-us/library/system.diagnostics.stacktrace.aspx
Но, как было сказано ниже, это даст вам метод и класс, вызывающий вас, но не экземпляр (если он есть, конечно, может быть статическим).
или просто передайте объект как параметр метода.
public void Method(object callerObject)
{
..
}
и вызовите Метод:
myClass.Method(this);
с уважением, Флориан
Было бы очень плохим стилем, поскольку
a) он нарушил бы инкапсуляцию
b) невозможно узнать тип вызывающего объекта во время компиляции, поэтому что бы вы ни делали с объектом позже, это, вероятно, не сработает.
в) было бы проще / лучше, если бы вы просто передали объект в конструктор или метод, например:
Class1 c1 = new Class1(object1);