Ответ 1
То, что вы спрашиваете, обсуждалось здесь:
Здесь моя проблема: у меня есть объект, ссылающийся на DLL. Я хотел бы, чтобы другие объекты ссылались на мой объект, не включая также ссылку на самую DLL.
Это отлично по большей части, кроме перечисления в DLL, которое я хотел бы воспроизвести. Я мог бы написать перечисление по строкам, но мне интересно, есть ли лучший способ сделать это.
т.
Скажем, DLL получила следующее перечисление:
public enum dllEnum
{
value1,
value2,
value3
}
Я мог бы сделать следующее:
public enum myEnum
{
value1,
value2,
value3
}
или еще лучше:
public enum myEnum
{
value1 = dllEnum.value1,
value2 = dllEnum.value2,
value3 = dllEnum.value3
}
Но в каждом из этих случаев я сам выписываю весь список перечислений. Я предпочел бы просто обернуть весь enum как свой собственный, сохранив индексы исходного перечисления.
Что-то по строкам:
public enum myEnum
{
Enum.GetValues(dllEnum)
}
То, что вы спрашиваете, обсуждалось здесь:
http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/ddedaf59-fb36-45cd-8062-446fa92d8f68
В этой статье приводятся некоторые замечательные примеры, которые могут помочь вам найти решение, благодаря которому вы динамически генерируете свой список и компилируете его во время выполнения. Я сделал это для функции типа eval в VB.Net, но я не сделал этого для перечисления.
Это не позволит проверять значения времени компиляции, так что вы будете в мире обид во многих отношениях. С DLR в .NET 4.0 я предполагаю, что у вас будет больше гибкости (хотя я признаю, что не читал подробности о следующей версии фреймворка.)