我知道这反对了枚举的想法,但是有可能在C#/ Java中扩展枚举吗?我的意思是"扩展",无论是为枚举添加新值,还是从现有枚举继承的OO意义.
我认为它在Java中是不可能的,因为它最近才得到它们(Java 5?).C#似乎对想要做疯狂事情的人更宽容,所以我认为这可能是某种方式.据推测它可以通过反射来破解(不是你每次都使用那种方法)?
我不一定对实现任何给定的方法感兴趣,它只是在我遇到它时激起了我的好奇心:-)
示例控制台程序.
class Program
{
static void Main(string[] args)
{
// ... code to build dll ... not written yet ...
Assembly assembly = Assembly.LoadFile(@"C:\dyn.dll");
// don't know what or how to cast here
// looking for a better way to do next 3 lines
IRunnable r = assembly.CreateInstance("TestRunner");
if (r == null) throw new Exception("broke");
r.Run();
}
}
Run Code Online (Sandbox Code Playgroud)
我想动态构建一个程序集(.dll),然后加载程序集,实例化一个类,并调用该类的Run()方法.我应该尝试将TestRunner类转换为某些东西吗?不确定一个程序集中的类型(动态代码)如何知道我的(静态程序集/ shell应用程序)中的类型.使用几行反射代码只在一个对象上调用Run()会更好吗?该代码应该是什么样的?
更新:威廉埃德蒙森 - 见评论