0

実行時にインターフェイスをコンパイルして「ハードコードされた」名前空間に追加できるかどうか、私は現在混乱しています。

説明するコード:

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)
        {

        }

    }
}

これは、2 番目のランタイム コンパイル コードです。ご覧のとおり、以前にコンパイルした iMobilePhones インターフェイスを使用しようとしています。

しかし、iMobilePhones は EngineCore のインターフェースではないため、コンパイルは失敗します。

実際の質問:

それで、以前にコンパイルされたインターフェイス iMobilePhones を EngineCore 名前空間に「登録」する方法があるかどうか疑問に思っていますか?

読んでいただきありがとうございます。どんな提案でも大歓迎です。

4

1 に答える 1

2

インターフェイスを使用するコードをコンパイルするときに、インターフェイスを含むアセンブリへの参照を追加するだけです。

于 2015-03-25T20:51:17.860 に答える