public enum ProviderType { SqlClient, OracleClient};
public class ExternalClass
{
private string field1;
private string field2;
private string EnumsDependance;
public ExternalClass(string p1, string p2, ProviderType type)
{
this.field1 = p1;
this.field2 = p2;
if (type == ProviderType.SqlClient)
{
this.EnumsDependance = "SQL TYPE";
}
else if (type == ProviderType.OracleClient)
{
this.EnumsDependance = "ORACLE TYPE";
}
else
{
this.EnumsDependance = "NO TYPE";
}
}
}
在我的计划,我需要创建一个使用反射这个类的一个实例,但必须通过这个类的枚举值的构造,我应该怎么办呢?
该程序位于不同的项目ExternalClass和ProviderType中,并且它必须通过反射来读取。这里是我的草图:
class Program
{
static void Main(string[] args)
{
//dynamically load assembly from file ExternalDLL.dll
Assembly assembly = Assembly.LoadFile(@"C:\temp\ExternalDLL.dll");
//get type of class ProviderType (enum) from just loaded assembly
Type providerType = assembly.GetType("ExternalDLL.ProviderType");
//get type of class ExternalClass from just loaded assembly
Type externalClassType = assembly.GetType("ExternalDLL.ExternalClass");
//creating an instance of the class ExternalClass, using reflection
//constructor -> ExternalClass(string p1, string p2, ProviderType type)
object externalClassInstance = Activator.CreateInstance(externalClassType, new object[]{"param1",
"param2",
"ENUM VALUE" //how should I pass the value?
});
}
}
你试过[通过反射获取枚举值](http://stackoverflow.com/a/13378148/996081)? – cubrr