Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
3 / 3 / 1
Регистрация: 01.10.2017
Сообщений: 37

NullReferenceException при вызове метода из Dll

02.11.2017, 21:00. Показов 1032. Ответов 6

Студворк — интернет-сервис помощи студентам
Нужна помощь




C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
 
    public class sharp
    {
    public decimal sum(decimal d, decimal b, decimal c, decimal m)
    {
        d = (b * c * m) / (365 * 100);
        return d;
    }   
}

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Reflection;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Assembly a = Assembly.Load("dll");
            Object o = a.CreateInstance("Class1");
            Type t = a.GetType("Class1");
            decimal b, c, m;
            Console.Write("Введите сумму вклада: ");
            b = Convert.ToInt32(Console.ReadLine());
            Console.Write("Введите срок вклада < в днях >: ");
            c = Convert.ToInt32(Console.ReadLine()); 
            Console.Write("Введите годовую процентную ставку: ");
            m = Convert.ToInt32(Console.ReadLine());
            MethodInfo mi = t.GetMethod("sum");
            Object[] numbers = new Object[3];
            numbers[0] = b;
            numbers[1] = c;
            numbers[2] = m;
            
            Console.WriteLine(mi.Invoke(o, numbers));
            Console.ReadKey();
        }
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.11.2017, 21:00
Ответы с готовыми решениями:

Ошибка при вызове метода dll
Есть dll, в которой определен метод с такой сигнатурой: public static KeyValuePair&lt;string, int&gt;...

NullReferenceException при вызове делегата
/// Создан новый класс. public static void ParsGrups() { var form = Form1.ActiveForm as Form2; ...

Исключение System.NullReferenceException при вызове через Android.Net.Sip
Приветствую. ВОзникла небольшая проблема. Пишу программу для совершения вызовов через SIP.Вот код using System; using Android.App; ...

6
 Аватар для Lexeq
1151 / 743 / 483
Регистрация: 21.01.2014
Сообщений: 1,903
02.11.2017, 23:48
Цитата Сообщение от Jenek123123 Посмотреть сообщение
Object o = a.CreateInstance("Class1");
Что такое Class1? У вас же класс с методом sum называется sharp.
0
3 / 3 / 1
Регистрация: 01.10.2017
Сообщений: 37
02.11.2017, 23:54  [ТС]
Изменил, теперь выводит 0
0
 Аватар для Lexeq
1151 / 743 / 483
Регистрация: 21.01.2014
Сообщений: 1,903
03.11.2017, 00:04
Не знаю, почему 0, оно вообще работать не должно sum принимает 4 параметра, а вы передаете 3.
И вместо этого
C#
1
Type t = a.GetType("Class1");
логичнее написать
C#
1
Type t = o.GetType();
0
3 / 3 / 1
Регистрация: 01.10.2017
Сообщений: 37
03.11.2017, 01:35  [ТС]
Ну изменил на 4 и выводит 0
0
 Аватар для Lexeq
1151 / 743 / 483
Регистрация: 21.01.2014
Сообщений: 1,903
03.11.2017, 02:17
Не знаю, что и как вы поменяли, мне отсюда не видно, поэтому прикладываю упрощенную рабочую версию:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
   class Program
    {
        static void Main(string[] args)
        {
            Assembly a = Assembly.GetExecutingAssembly();
            Object o = a.CreateInstance("ConsoleApplication1.Sharp");
            MethodInfo mi = o.GetType().GetMethod("Sum");
            Console.WriteLine(mi.Invoke(o, new object[] { 10m, 40m, 2m }));
            Console.ReadKey();
        }
    }
 
    public class Sharp
    {
        public decimal Sum(decimal b, decimal c, decimal m)
        {
            return (b * c * m) / (365 * 100);
        }
    }
0
3 / 3 / 1
Регистрация: 01.10.2017
Сообщений: 37
03.11.2017, 15:06  [ТС]
Я уже все сделал, спасибо
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Reflection;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Assembly a = Assembly.Load("dll");
            Object o = a.CreateInstance("vscode");
            Type t = a.GetType("vscode");
 
            decimal b, c, m;
            Console.Write("Введите сумму вклада: ");
            b = Convert.ToDecimal(Console.ReadLine());
            Console.Write("Введите срок вклада < в днях >: ");
            c = Convert.ToDecimal(Console.ReadLine());
            Console.Write("Введите годовую процентную ставку: ");
            m = Convert.ToDecimal(Console.ReadLine());
 
            Object[] numbers = new Object[3];
            numbers[0] = b;
            numbers[1] = c;
            numbers[2] = m;
 
            MethodInfo mi = t.GetMethod("sum");
            Console.WriteLine("Ваш доход составил: " + mi.Invoke(o, numbers));
            MethodInfo mu = t.GetMethod("sr");
            Console.WriteLine("Сумма выплаты: " + mu.Invoke(o, numbers));
 
            Console.ReadKey();
        }
    }
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
public class vscode
{
    public decimal sum(decimal b, decimal c, decimal m)
    {
        return Math.Round((b * c * m) / (365 * 100), 2);
    }
    public decimal sr(decimal b, decimal c, decimal m)
    {
        return Math.Round((b * c * m)/(365 * 100)+(b) , 2) ;
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.11.2017, 15:06
Помогаю со студенческими работами здесь

Что означает первый параметр метода этого класса? И почему при вызове метода передаётся один параметр(второй)?
public static HelpPageApiModel GetHelpPageApiModel(this HttpConfiguration config, string apiDescriptionId)

Ошибка при вызове метода
Всем доброго утречка! Такой вот код написала, где программно создаю и хочу провести, но выдаёт ошибку ...

Ошибка при вызове метода
Не пойму в чем ошибка... #include &lt;vector&gt; #include &lt;iostream&gt; template &lt;typename T&gt; class Beast { public: int x; ...

Ошибка при вызове метода
Доброго времени суток. Где-то в файле mainwindow.cpp в слоте я пишу: DraftsmanCube::diagonalA_C(); В этом методе diagonalA_C...

Ошибка при вызове метода
Выдает ошибку в строке Ferma.ask(); хочу чтобы при запуске программы писало строчку, а потом обращался к классу Ferma, каждый раз, а из...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru