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