Использование функций класса полученного из Dictionary

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Использование функций класса полученного из Dictionary

Сообщение Nevers 03 сен 2011, 21:13

Суть такая. Создаю коллекцию, добавляю элемент, потом получаю этот элемент и при попытке использования Public значения или функции получаю такое.
"Assets/Loop.cs(45,63): error CS1061: Type `object' does not contain a definition for `pName' and no extension method `pName' of type `object' could be found (are you missing a using directive or an assembly reference?)"

Вот что я делаю.
Синтаксис:
Используется csharp
public class Loop : MonoBehaviour {

        public ArrayList pListInterfaces = new ArrayList();
        public Dictionary<string, int> pListInterfacesIds = new Dictionary<string, int>();
        public InterfaceSplash pInterfaceSplash = new InterfaceSplash();

        void Start () {
                pListInterfaces.Add(pInterfaceSplash);
                pListInterfacesIds.Add(pInterfaceSplash.pName, pListInterfaces.Count-1);

                string lNameTmp = "InterfaceSplash";
                int lId = pListInterfacesIds[lNameTmp];
                object lObject = pListInterfaces[lId];
                print(lObject.pName);//Здесь выходит ошибка.......ПАЧЕМУУУ???
        }

}
--------------------------------------------------------------------------------------------
using System;
using UnityEngine;
public class InterfaceSplash{
        public string pName = "InterfaceSplash";
}
 
Nevers
UNIт
 
Сообщения: 56
Зарегистрирован: 22 фев 2011, 10:16

Re: Использование функций класса полученного из Dictionary

Сообщение seaman 03 сен 2011, 22:48

Потому что у класса object нет поля pName, а тип lObject как раз object.
Я конечно не знаю, что Вам конкретно надо, но как минимум:
Синтаксис:
Используется csharp
InterfaceSplash lObject = pListInterfaces[lId];
print(lObject.pName)

или хотя бы:
Синтаксис:
Используется csharp
object lObject = pListInterfaces[lId];
print((InterfaceSplash)lObject.pName)
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Использование функций класса полученного из Dictionary

Сообщение Nevers 04 сен 2011, 10:00

Синтаксис:
Используется csharp
...
InterfaceSplash lObject = pListInterfaces[lId];
print(lObject.pName);
..
 

Попробовал так, но вот что получаю.
"Assets/Loop.cs(44,65): error CS0266: Cannot implicitly convert type `object' to `InterfaceSplash'. An explicit conversion exists (are you missing a cast?)"
Nevers
UNIт
 
Сообщения: 56
Зарегистрирован: 22 фев 2011, 10:16

Re: Использование функций класса полученного из Dictionary

Сообщение seaman 04 сен 2011, 13:04

Сорри. Упущение.
Ну так приведите:
Синтаксис:
Используется csharp
InterfaceSplash lObject = (InterfaceSplash) pListInterfaces[lId];
print(lObject.pName);
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18