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 ответ

Решение

Вам просто нужно добавить ссылку на сборку, содержащую интерфейс, когда вы компилируете код, который его использует.

Другие вопросы по тегам