Имя общего класса с динамическим [дублированием]

Строка ошибки «Ссылка на объект, не установленная на экземпляр объекта.» указывает, что вы не назначили экземпляр объекта объектной ссылке, и все же вы получаете доступ к свойствам / методам этого объекта.

например: скажем, у вас есть класс под названием myClass и он содержит одно свойство prop1.

public Class myClass
{
   public int prop1 {get;set;}
}

Теперь вы получаете доступ к этому prop1 в каком-то другом классе, как показано ниже:

public class Demo
{
     public void testMethod()
     {
        myClass ref = null;
        ref.prop1 = 1;  //This line throws error
     }
}

выше строки выдает ошибку, потому что ссылка класса myClass объявлена, но не создана, или экземпляр объекта не назначается referecne этого класса.

Чтобы исправить это, вам нужно создать экземпляр (присвоить объект ссылке на этот класс).

public class Demo
{
     public void testMethod()
     {
        myClass ref = null;
        ref = new myClass();
        ref.prop1 = 1;  
     }
}
25
задан sth 28 March 2010 в 23:42
поделиться

3 ответа

Просто используйте .Name следующим образом:

typeof(T).Name

Это дает, например, «String», также .FullName, который даст «System.String»

52
ответ дан Nick Craver 26 August 2018 в 05:15
поделиться
typeof(T).Name //would work

Но в зависимости от этого и принятия решений на его основе, вероятно, не очень хорошая идея.

Важным правилом здесь является то, что вы, вероятно, должны использовать FullName, когда это возможно.

Например, в операторах case switch или в блоках if else или в словарных словах.

Имя класса не является идеальной вещью, от которой зависит, поскольку вы потенциально можете иметь одно и то же имя класса в разных Пространства имен. NamespaceA.String и NamespaceB.String вполне возможно ...

1
ответ дан djv 26 August 2018 в 05:15
поделиться

typeof(T).Name?

4
ответ дан mnemosyn 26 August 2018 в 05:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: