C# Runtime Compilation - Добавить новый интерфейс в пространство имен
Я в настоящее время в замешательстве, если можно скомпилировать интерфейс во время выполнения и добавить его в "жестко закодированное" пространство имен.
Некоторый код для объяснения:
using System;
using System.Runtime.CompilerServices;
using EngineCore;
namespace EngineCore
{
public interface iMobilePhones
{
string phoneNumber {get; set;}
string phoneRingtone {get; set;}
void CallNumber(string phoneNumber);
}
}
Это скомпилированный интерфейс во время выполнения, который я хочу добавить в пространство имен EngineCore во время выполнения.
Компиляция, кажется, работает как положено, и, как вы можете видеть, я скомпилировал ее, используя пространство имен EngineCore.
using System;
using System.Runtime.CompilerServices;
using EngineCore;
namespace EngineCore
{
public class EQMobilePhoneCheap : iMobilePhones
{
//iMobilePhones interface members
private string PhoneNumber;
private string PhoneRingtone = "Default";
public string phoneNumber
{
get
{
return PhoneNumber;
}
set
{
PhoneNumber = value;
}
}
public string phoneRingtone
{
get
{
return PhoneRingtone;
}
set
{
PhoneRingtone = value;
}
}
//iMobilePhones interface functions
public void CallNumber(string phoneNumber)
{
}
}
}
Это второй исполняемый код во время выполнения. Как видите, я пытаюсь использовать интерфейс iMobilePhones, скомпилированный ранее.
Но компиляция не удалась, потому что iMobilePhones не является интерфейсом EngineCore
Актуальный вопрос:
Поэтому мне интересно, есть ли способ "зарегистрировать" ранее скомпилированный интерфейс iMobilePhones в пространстве имен EngineCore?
Большое спасибо за чтение. Любые предложения приветствуются.
1 ответ
Вам просто нужно добавить ссылку на сборку, содержащую интерфейс, когда вы компилируете код, который его использует.