Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.97/35: Рейтинг темы: голосов - 35, средняя оценка - 4.97
0 / 0 / 0
Регистрация: 04.05.2013
Сообщений: 6
1

Как узнать имя класса

05.05.2013, 02:54. Показов 6589. Ответов 12
Метки нет (Все метки)

В общем проблема в том, что нужно в функции SampleFunction получить имя класса "nameclass"?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
public class SampleClass
{
    public string SampleFunction
    {
        return /*Что тут написать, чтоб получить nameclass?*/
    }
}
 
public void Main
{
    SampleClass nameclass = new SampleClass();
    string s = nameclass.SampleFunction();
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.05.2013, 02:54
Ответы с готовыми решениями:

Как узнать имя процесса, зная имя программы?
Здравствуйте, подскажите пожалуйста, как узнать имя процесса выполняемой программы, зная имя этой...

Можно ли во время выполнения "извлечь" имя приложения, имя класса, имя исполняемого метода и пр. ?
или какие-нубдь "квазипеременные" компилятора, позволяющие их использовать?

Как узнать имя любого файла в архиве
У меня есть библиотека Ionic.Utils.Zip.dll Я вот так могу разархивировать файл: using...

Как узнать имя машины на которой запущена программа
Здравствуйте , подскажите пожалуйста как можно узнать имя компьютера но котором запущена программа?

12
Master of Orion
Эксперт .NET
6079 / 4935 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
05.05.2013, 08:54 2
LastArcane,
C#
1
2
3
4
     public string SampleFunction
    {
        return this.ToString();
    }
0
0 / 0 / 0
Регистрация: 04.05.2013
Сообщений: 6
05.05.2013, 14:37  [ТС] 3
Цитата Сообщение от Psilon Посмотреть сообщение
LastArcane,
C#
1
2
3
4
     public string SampleFunction
    {
        return this.ToString();
    }
это вернет что-то вроде namespace+SampleClass, а мне бы получить объявленное имя класса nameclass, а не тип

Добавлено через 37 минут
В ообщем проблема решилась просто, передачей в конструктор класса уникального имени и свойством Name только для чтения. Хотя вопрос открыт.
0
Master of Orion
Эксперт .NET
6079 / 4935 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
05.05.2013, 14:50 4
LastArcane,
C#
1
2
3
4
5
     public string SampleFunction
    {
        string s = ToString().Split('.');
        return s[s.Length-1];
    }
В ООП класс == тип
0
0 / 0 / 0
Регистрация: 04.05.2013
Сообщений: 6
05.05.2013, 15:28  [ТС] 5
Я конечно понимаю, что все привыкли отвечать шаблонными ответами, но я еще раз повторюсь: мне абсолютно не нужен тип класса, мне нужно имя его переменной, если вообще это возможно. Или как-нибудь вытащить из MSIL кода

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class SampleClass
{
    public string SampleFunction
    {
        return /*Что тут написать?*/
    }
}
 
public void Main
{
    SampleClass cls1 = new SampleClass();
    SampleClass cls2 = new SampleClass();
    SampleClass cls3 = new SampleClass();
 
    string s1 = cls1.SampleFunction(); //Тут надо получить в результате "cls1"
    string s2 = cls2.SampleFunction(); //Тут надо получить в результате "cls2"
    string s3 = cls3.SampleFunction(); //Тут надо получить в результате "cls3"
}
0
Master of Orion
Эксперт .NET
6079 / 4935 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
05.05.2013, 20:24 6
LastArcane, афаик это невозможно
0
Темная сторона .Net
590 / 487 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
05.05.2013, 22:19 7
Psilon, Не подводи ты так, но твердил я же, что слаба светлой стороны сила..
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            Program m = new Program();
            Console.WriteLine(((object)m).GetType().Name);
            Console.ReadLine();
        }
    }
}
Добавлено через 6 минут

Не по теме:

Ну или ТуСтрингом а потом парсить строку хД

0
Master of Orion
Эксперт .NET
6079 / 4935 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
05.05.2013, 22:26 8
Noob.net, он хочет, чтобы класс знал имена всех созданных экземпляров этого же класса. Имхо это рушит всю идею инкапсуляции => невозможно. Поправь если я не прав.
0
Темная сторона .Net
590 / 487 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
05.05.2013, 22:28 9
Psilon, Прав)

Дружно посоветуем для этой цели использовать поля вроде Name.
Я более чем уверен что достать имена инстансов возможно, но затраченных усилий это не будет стоить. Проще юзать поля.
LastArcane, кстати никакой юзабилити ваша затея не пахнет.
0
Master of Orion
Эксперт .NET
6079 / 4935 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
05.05.2013, 22:30 10
Noob.net, рефлексию я не рассматривал, так как это явно не уровень автора, тормознуто, глючно... В общем, привет все то, от чего в шарпе так долго отходили
0
Noob.net
05.05.2013, 22:33
  #11

Не по теме:

Psilon, и на чем все в нем построено и чем все пользуются постоянно :D (мое мнение из личного опыта)

0
Psilon
05.05.2013, 22:36
  #12

Не по теме:

Noob.net, сами кишки да, пользуются, а лишний раз в это лезть я бы не стал. Если только всякие полиморфные вирусы не писать. НО вирус, который высвечивает мессаджбокс, что для его работы нужно установить фреймворк, sql server и еще 100500 программ меня очень порадует:)

0
0 / 0 / 0
Регистрация: 04.05.2013
Сообщений: 6
05.05.2013, 23:34  [ТС] 13
Цитата Сообщение от Noob.net Посмотреть сообщение
Дружно посоветуем для этой цели использовать поля вроде Name.
Цитата Сообщение от LastArcane Посмотреть сообщение
В ообщем проблема решилась просто, передачей в конструктор класса уникального имени и свойством Name только для чтения.
Цитата Сообщение от Noob.net Посмотреть сообщение
кстати никакой юзабилити ваша затея не пахнет
Согласен, просто давно не сидел за шарпом думал может чего нового придумали. Всем спасибо
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.05.2013, 23:34

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Как узнать имя пользователя который изменил файл последним?
Как узнать имя пользователя который изменил файл последним? Собственно сабж. Копал MSDN...

Именованный мьютекс - как узнать созданное процессом имя семафора
к примеру (вскрыто Reflector'ом) var mutex = new Mutex(false, "44938b8f"); mutex.WaitOne();...

Если исполняемый файл находится в архиве, как узнать имя этого архива?
Подскажите пожалуйста, если исполняемый файл находится в архиве, как узнать имя этого архива?

Как получить имя класса, которому принадлежит поле
Есть метод с одним out-параметром, принимающим string. Как с помощью рефлексии в этом методе...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.