Не удалось загрузить тип xxx из сборки xxx - PullRequest
2 голосов
/ 06 июля 2010

Я делаю приложение для Windows, где пользователь выбирает тип из поля со списком. Основываясь на выборе, используя отражение, я хочу создать экземпляр соответствующего типа и вызвать один из его методов. Типы, которые я хочу создать, также определены в том же приложении Windows, что и отдельные классы. Но я получаю ошибку, как указано в заголовке. Вот мой код.

Код Form1:

public partial class Form1 : Form
{

    public Form1()
    {
        InitializeComponent();
        cbLogs.SelectedIndex = 0;
    }

    private void btnProcess_Click(object sender, EventArgs e)
    {
        lblMessage.Text = "";
        lblResult.Text = "";
        if (cbLogs.SelectedIndex <= 0)
        {
            lblMessage.Text = "Please select Log to be processed";
            cbLogs.Focus();
            return;
        }
        Assembly currAss = System.Reflection.Assembly.GetExecutingAssembly();
        //I get above error on below line.
        object obj = Activator.CreateInstance(currAss.FullName,"SustainabilityXpress ");
        Type type = obj.GetType();
        object result = type.InvokeMember("process", 
            BindingFlags.Default | BindingFlags.InvokeMethod,
            null, obj, null);

        lblResult.Text = result.ToString();

    }

}

Интерфейс ILogBase:

interface ILogBase
{        
    string process();

}

Класс SustainabilityXpress, который реализует ILogBase:

public class SustainabilityXpress: ILogBase
{
    string LogName = "SUSTAINABILITYXPRESS";
    public string process()
    {
        return "Sustainabilityxpress";
    }
}

Ответы [ 3 ]

5 голосов
/ 06 июля 2010

Обязательно правильно назовите класс SustainabilityXpress - не забываете ли вы добавить его пространство имен? (например, «Name.Space.SustainabilityXpress»).

Кроме того, установите флажок Activator.CreateInstance , чтобы убедиться, что выполнены все требования.

И, как указал @Grzenio, в названии SustainabilityXpress.

может быть опечатка.
1 голос
/ 06 июля 2010

Я не уверен, что это только в посте, но в "SustainabilityXpress " не должно быть пробела.Вы также должны использовать полное имя класса (включая пространство имен).

Если это не поможет, возможно, тип просто отсутствует в сборке?GetExecutingAssembly возвращает вам сборку, в которой текущий код находится в ...

0 голосов
/ 06 июля 2010

Я только что заметил, что в "SustainabilityXpress" есть пробел. Попробуйте удалить его, возможно, это была проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...