211 / 209 / 137
Регистрация: 21.12.2015
Сообщений: 545
1

Тип dynamic и object ConstructorInfo.Invoke(object[] parameters)

22.12.2016, 20:39. Показов 1782. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C#
1
2
dynamic tob = ci.Invoke(new object[]{10,"привет"});
        Console.WriteLine(tob.A());
ошибка : Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: "object" не содержит определения для "A" - это все понятно, так как
Invoke возвращает object, и соответственно тип tob определяется как object. Как исправить?
К слову, в книге Шилдта все делается аналогично
Миниатюры
Тип dynamic и object ConstructorInfo.Invoke(object[] parameters)  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.12.2016, 20:39
Ответы с готовыми решениями:

HtmlAgilityPack выбрасывает исключение Object reference not set to an instance of an object
Помогите пожалуйста разобраться. Есть такой html код Хочу получить строку "Начало". Пишу такой...

Ошибка System.NullReferenceException : Object reference not set to an instance of an object
Совсем недавно начал учить C# . Наткнулся на ресурс codewars,где нужно по условию написать код и...

При streamreader.ReadLine() выскакивает ошибка object reference not set to an instance of object
Здраствуйте, у меня вдруг появилась такая проблема, что при streamreader.ReadLine() выскакивает...

Вывести переменную типа string в консоль: Object reference not set to an instance of an object
Вот такой сабж. Пытаюсь вывести переменную типа стринг в консоль Сначала, как обычно for...

10
906 / 663 / 318
Регистрация: 23.10.2016
Сообщений: 1,543
22.12.2016, 21:24 2
А у меня вот это работает, так что давайте больше кода:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Test
{
    public Test()
    {
 
    }
    public void Print()
    {
        Console.WriteLine("PRINT");
    }
}
 
void Main()
{
    var ci = typeof(Test).GetConstructors()[0];
    dynamic o = ci.Invoke(null);
    o.Print();
}


Добавлено через 2 минуты
Наугад: у вас там A случайно не русская?
0
211 / 209 / 137
Регистрация: 21.12.2015
Сообщений: 545
22.12.2016, 21:29  [ТС] 3
TopLayer, неа
0
906 / 663 / 318
Регистрация: 23.10.2016
Сообщений: 1,543
22.12.2016, 21:32 4
Цитата Сообщение от TuM0xA Посмотреть сообщение
неа
А может не public?

Добавлено через 37 секунд
Хотя тогда бы другая ошибка была...
0
211 / 209 / 137
Регистрация: 21.12.2015
Сообщений: 545
22.12.2016, 21:38  [ТС] 5
подопытный класс
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
using System;
class TESTCLASS 
{
    int i;
    string s;
    public TESTCLASS(int i, string s)
    {
        this.i = i;
        this.s = s;
    }
    public void WhoIam() { Console.WriteLine("ты огурец"); }
    public string A() { return s + i; }
    public static int X10(int i) { return i * 10; }
}

метод main
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using System;
using System.Reflection;
class RaD
{
    static void Main() 
    {
        Assembly tstcl = Assembly.LoadFrom("E:\\TESTCLASS.dll");
        Type TESTCLASS = tstcl.GetType("TESTCLASS");
        Console.WriteLine(TESTCLASS.Name);
        ConstructorInfo ci = TESTCLASS.GetConstructor(new Type[]{typeof(Int32),typeof(String)});
        dynamic tob = ci.Invoke(new object[]{10,"привет"});
        Console.WriteLine(tob.A());   
        Console.WriteLine(tob.ToString());
    }
}


Добавлено через 5 минут
dll-ка из которой я загружаю сборку - это просто подопытный класс скомпилированный в библиотеку
0
906 / 663 / 318
Регистрация: 23.10.2016
Сообщений: 1,543
22.12.2016, 21:53 6
TuM0xA, воспроизвёл, пока нет мыслей как исправить.
0
1147 / 739 / 483
Регистрация: 21.01.2014
Сообщений: 1,903
22.12.2016, 22:27 7
тут была неверная инфа
А нет, я ошибся. Работает с public, и ошибка с private.
1
Эксперт .NET
17215 / 12669 / 3321
Регистрация: 17.09.2011
Сообщений: 20,942
23.12.2016, 03:35 8
Лучший ответ Сообщение было отмечено TuM0xA как решение

Решение

Цитата Сообщение от TuM0xA Посмотреть сообщение
подопытный класс
Добавьте ему модификатор public.
2
906 / 663 / 318
Регистрация: 23.10.2016
Сообщений: 1,543
23.12.2016, 11:53 9
Цитата Сообщение от kolorotur Посмотреть сообщение
Добавьте ему модификатор public.
Не помогает
0
Эксперт .NET
17215 / 12669 / 3321
Регистрация: 17.09.2011
Сообщений: 20,942
23.12.2016, 12:49 10
TopLayer, а после того, как либу с классом перекомпилировали, не забыли ее новую на Е скопировать?
1
906 / 663 / 318
Регистрация: 23.10.2016
Сообщений: 1,543
23.12.2016, 14:06 11
kolorotur, у меня бралась сборка из папки bin. Неоднократная очистка и пересбор решения не помогали (я давно там public прописал). Удалил папку bin и всё заработало. Спасибо, а то я уже документацию DLR стал читать
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.12.2016, 14:06
Помогаю со студенческими работами здесь

Программа не выполняет условие (fileInput != null) и выдает Object reference not set to instance of an object
Доброго времени суток, форумчане! Помогите бедному студенту решить вот такую проблему: Программа...

Абстрактный класс. Object reference not set to an instance of an object.
Не работает поиск по заданной дате... Ругается вот на эту строчку: foreach (klient kl in res) в...

System.NullReferenceException: Object reference not set to an instance of an object
Проблема заключается вот в чем Написал код на c# на компьютере, переношу его на мобильную...

Проблема со свойствами: Object reference not set to an instance of an object
Здравствуйте, пишу вот такой код: using System; using System.Collections.Generic; using...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru