Передача значения из сборки в приложение на C # - PullRequest
2 голосов
/ 06 декабря 2011

Если у меня есть сборка, которая содержит функцию, которая манипулирует строкой, а затем возвращает эту строку, а затем у меня есть отдельное приложение C #, которое вызывает функцию из сборки ...

Как передать обработанную строку из сборки в приложение?

Например, если у меня есть эта сборка ...

using System;

namespace test
{

    public class Class1
    {
        string inputString = "hello";
        string outputString;

        public static string Convert(ref inputString, ref outputString)
        {
            outputString = inputString.ToUpper();
            return outputString;
        }
    }
}

И у меня есть это приложение, которое вызывает функцию преобразования в сборке ...

using System;
using test;

public class Class2
{
    public static void Main()
    {
        Class1.Convert();
    }
}

Как я могу получить возвращенную outputString в приложение Class2? Я не могу ссылаться на него в функции Main (), так как я могу передать его?

Ответы [ 4 ]

4 голосов
/ 06 декабря 2011

Похоже, вы хотите передать действительное, а затем вернуть другое значение? Затем избавьтесь от свойств вашего Class1, они не нужны. Просто сделайте входную строку параметром функции Convert, а затем верните вывод.

using System;

namespace test
{

    public class Class1
    {
        public static string Convert(string inputString)
        {
            string outputString = inputString.ToUpper();
            return outputString;
        }
    }
}

и

using System;
using test;

public class Class2
{
    public static void Main()
    {
        string thisIsMyReturnedString = Class1.Convert("whatever the input value should be");
    }
}
2 голосов
/ 06 декабря 2011

EDIT:

Ваша функция Convert () должна принимать только один параметр, поскольку вы возвращаете другое значение. Параметр не должен быть помечен как ref, если вы не собираетесь изменять его в своей функции.


Заменить:

Class1.Convert();

с

string inputValue = "old value";
string returnValue = Class1.Convert(ref inputValue);
1 голос
/ 06 декабря 2011

Вам необходимо добавить ссылку на вашу dll в основной проект:

В основном проекте щелкните правой кнопкой мыши Ссылки -> Добавить ссылку
Как только это будет сделано, вы можете использовать Convert следующим образом:

string result = Class1.Convert(ref myInputString, ref myOutputString);

В sidenote ваше возвращение бесполезно, вы уже используете параметры в качестве ссылки.
Подпись вашего метода должна быть недействительной:

public static void Convert(ref inputString, ref outputString)
{
    outputString = inputString.ToUpper();
}

Тогда вы бы назвали это так:

string input = "My InPuT";
string output = "";
Class1.Convert(ref input, ref output);
//Here, output = "MY INPUT"
0 голосов
/ 06 декабря 2011

Если это два разных проекта внутри одного решения, добавьте ссылку на проект.Если это два разных решения, добавьте ссылку на dll.

...