namespace SomeInterfaces
{
public interface ITest
{
void Test();
}
}
Загрузка класса с интернета без библиотеки классов(C#)
Код:
Есть класс, который его реализует ( в виде dll-ки, класс либы ):
Код:
namespace TestAsm
{
public class TestClass : SomeInterfaces.ITest
{
public void Test()
{
throw new NotImplementedException();
}
}
}
{
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();
}
}
}
{
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();
}
}
}
{
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
}
}
}
{
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
}
}
}
все компилируется, но работать не хочет. Полные имена интерфейса совпадают в реализации класса и программе, но интерфейса чего-то получить не могу =(