C# 运行时编译 - 向命名空间添加新接口
C# Runtime Compilation - Add new interface to namespace
我目前很困惑,是否可以在运行时编译接口并将其添加到 "hardcoded" 命名空间。
部分代码解释:
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的接口
真题:
所以我想知道是否有办法"register" 之前编译的接口 iMobilePhones 到 EngineCore 命名空间?
非常感谢您的阅读。
欢迎提出任何建议。
您只需要在编译使用它的代码时添加对包含该接口的程序集的引用。
我目前很困惑,是否可以在运行时编译接口并将其添加到 "hardcoded" 命名空间。
部分代码解释:
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的接口
真题:
所以我想知道是否有办法"register" 之前编译的接口 iMobilePhones 到 EngineCore 命名空间?
非常感谢您的阅读。 欢迎提出任何建议。
您只需要在编译使用它的代码时添加对包含该接口的程序集的引用。