Как вызвать функцию из подключенной dll - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, подскажите пожалуйста как вызвать функцию result, если этот код будет помещен в отдельный dll? У меня пишет что нет такой функции когда я пытаюсь подключить.
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Windows.Forms;
  4. namespace PostfixNotation
  5. {
  6. public class PostfixNotationExpression
  7. {
  8. public PostfixNotationExpression()
  9. {
  10. operators = new List<string>(standart_operators);
  11. }
  12. private List<string> operators;
  13. private List<string> standart_operators =
  14. new List<string>(new string[] { "(", ")", "+", "-", "*", "/", "^" });
  15. private IEnumerable<string> Separate(string input)
  16. {
  17. int pos = 0;
  18. while (pos < input.Length)
  19. {
  20. string s = string.Empty + input[pos];
  21. if (!standart_operators.Contains(input[pos].ToString()))
  22. {
  23. if (Char.IsDigit(input[pos]))
  24. for (int i = pos + 1; i < input.Length &&
  25. (Char.IsDigit(input[i]) || input[i] == ',' || input[i] == '.'); i++)
  26. s += input[i];
  27. else if (Char.IsLetter(input[pos]))
  28. for (int i = pos + 1; i < input.Length &&
  29. (Char.IsLetter(input[i]) || Char.IsDigit(input[i])); i++)
  30. s += input[i];
  31. }
  32. yield return s;
  33. pos += s.Length;
  34. }
  35. }
  36. private byte GetPriority(string s)
  37. {
  38. switch (s)
  39. {
  40. case "(":
  41. return 0;
  42. case ")":
  43. return 1;
  44. case "+":
  45. return 2;
  46. case "-":
  47. return 3;
  48. case "*":
  49. case "/":
  50. return 4;
  51. case "^":
  52. return 5;
  53. default:
  54. return 6;
  55. }
  56. }
  57. public string[] ConvertToPostfixNotation(string input)
  58. {
  59. List<string> outputSeparated = new List<string>();
  60. Stack<string> stack = new Stack<string>();
  61. foreach (string c in Separate(input))
  62. {
  63. if (operators.Contains(c))
  64. {
  65. if (stack.Count > 0 && !c.Equals("("))
  66. {
  67. if (c.Equals(")"))
  68. {
  69. string s = stack.Pop();
  70. while (s != "(")
  71. {
  72. outputSeparated.Add(s);
  73. s = stack.Pop();
  74. }
  75. }
  76. else if (GetPriority(c) >= GetPriority(stack.Peek()))
  77. stack.Push(c);
  78. else
  79. {
  80. while (stack.Count > 0 && GetPriority(c) < GetPriority(stack.Peek()))
  81. outputSeparated.Add(stack.Pop());
  82. stack.Push(c);
  83. }
  84. }
  85. else
  86. stack.Push(c);
  87. }
  88. else
  89. outputSeparated.Add(c);
  90. }
  91. if (stack.Count > 0)
  92. foreach (string c in stack)
  93. outputSeparated.Add(c);
  94. return outputSeparated.ToArray();
  95. }
  96. public decimal result(string input)
  97. {
  98. Stack<string> stack = new Stack<string>();
  99. Queue<string> queue = new Queue<string>(ConvertToPostfixNotation(input));
  100. string str = queue.Dequeue();
  101. while (queue.Count >= 0)
  102. {
  103. if (!operators.Contains(str))
  104. {
  105. stack.Push(str);
  106. str = queue.Dequeue();
  107. }
  108. else
  109. {
  110. decimal summ = 0;
  111. try
  112. {
  113. switch (str)
  114. {
  115. case "+":
  116. {
  117. decimal a = Convert.ToDecimal(stack.Pop());
  118. decimal b = Convert.ToDecimal(stack.Pop());
  119. summ = a + b;
  120. break;
  121. }
  122. case "-":
  123. {
  124. decimal a = Convert.ToDecimal(stack.Pop());
  125. decimal b = Convert.ToDecimal(stack.Pop());
  126. summ=b-a;
  127. break;
  128. }
  129. case "*":
  130. {
  131. decimal a = Convert.ToDecimal(stack.Pop());
  132. decimal b = Convert.ToDecimal(stack.Pop());
  133. summ = b * a;
  134. break;
  135. }
  136. case "/":
  137. {
  138. decimal a = Convert.ToDecimal(stack.Pop());
  139. decimal b = Convert.ToDecimal(stack.Pop());
  140. summ = b / a;
  141. break;
  142. }
  143. case "^":
  144. {
  145. decimal a = Convert.ToDecimal(stack.Pop());
  146. decimal b = Convert.ToDecimal(stack.Pop());
  147. summ = Convert.ToDecimal(Math.Pow(Convert.ToDouble(b), Convert.ToDouble(a)));
  148. break;
  149. }
  150. }
  151. }
  152. catch (Exception ex)
  153. {
  154. MessageBox.Show(ex.Message);
  155. }
  156. stack.Push(summ.ToString());
  157. if (queue.Count > 0)
  158. str = queue.Dequeue();
  159. else
  160. break;
  161. }
  162. }
  163. return Convert.ToDecimal(stack.Pop());
  164. }
  165. }
  166. }

Решение задачи: «Как вызвать функцию из подключенной dll»

textual
Листинг программы
  1. PostfixNotationExpression pne = new PostfixNotationExpression();
  2. textBox1.Text = pne.result("2+2").ToString();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.7 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы