Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Загрузка класса с интернета без библиотеки классов(C#)

62K
04 августа 2010 года
Desconocido
1 / / 04.08.2010
Суть такова... Есть интерфейс, например:

 
Код:
namespace SomeInterfaces
{
    public interface ITest
    {
        void Test();
    }
}


Есть класс, который его реализует ( в виде dll-ки, класс либы ):

 
Код:
namespace TestAsm
{
    public class TestClass : SomeInterfaces.ITest
    {
        public void Test()
        {
            throw new NotImplementedException();
        }
    }
}


И есть программа, которая загружает либу и создает экземпляр класса:

Код:
namespace OloloL
{
    class Program
    {
        static void Main(string[] args)
        {
            System.Reflection.Assembly asm = System.Reflection.Assembly.LoadFrom(@"http://***.ua/botAI/TestAsm.dll");
            Type type = asm.GetType("TestAsm.TestClass");
            var iface = Activator.CreateInstance(type) as SomeInterfaces.ITest;
            iface.Test();
        }
    }
}


Если скомпоновать интерфейс в библиотеку классов, добавить ссылки на эту либу в проэкт с реализацией класса и проэкт прогой - все работает.
А как создать экземпляр класса если нету класслибы с интерфейсом, есть только DLL-ка с классом и описание интерфейса? Т.е. так:

Код:
namespace SomeInterfaces
{
    public interface ITest
    {
        void Test();
    }
}
namespace TestAsm
{
    public class TestClass : SomeInterfaces.ITest
    {
        public void Test()
        {
            throw new NotImplementedException();
        }
    }
}



Код:
namespace SomeInterfaces
{
    public interface ITest
    {
        void Test();
    }
}
namespace OloloL
{
    class Program
    {
        static void Main(string[] args)
        {
            System.Reflection.Assembly asm = System.Reflection.Assembly.LoadFrom(@"http://***.ua/botAI/TestAsm.dll");
            Type type = asm.GetType("TestAsm.TestClass");
            var iface = Activator.CreateInstance(type) as SomeInterfaces.ITest;
            [COLOR="Red"]iface.Test();[/COLOR] // iface == null
        }
    }
}

все компилируется, но работать не хочет. Полные имена интерфейса совпадают в реализации класса и программе, но интерфейса чего-то получить не могу =(
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог