【发布时间】:2011-12-22 14:43:33
【问题描述】:
我需要这样做:-
MyClass.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace set_property__Enum_To_Nullable_Enum
{
public enum MyEnum : short
{
One,
Two,
Three
}
public class MyClass
{
public string MyStringProperty { get; set; }
public MyEnum? MyEnumProperty { get; set; }
public void ShowAll(string message)
{
Console.WriteLine(message);
Console.WriteLine("String = " + MyStringProperty);
Console.WriteLine("Enum = " + MyEnumProperty.Value);
}
}
}
Program.cs
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
namespace set_property__Enum_To_Nullable_Enum
{
class Program
{
static void Main(string[] args)
{
//Names
string myAssemblyName = "MyAssembly";
string myNamespaceName = "set_property__Enum_To_Nullable_Enum";
string myClassName = "MyClass";
string propertyNameOne = "MyStringProperty";
string propertyNameTwo = "MyEnumProperty";
//Data
string myString = "Hello World!";
short myInteger = 1;
//Preprocessing
Assembly myAssmbly = Assembly.Load(myAssemblyName);
Type myType = myAssmbly.GetType(myNamespaceName + "." + myClassName);
//Create class-instance
object objectInstance = Activator.CreateInstance(myType);
//Set property-values
PropertyInfo propertyInfoOne = myType.GetProperty(propertyNameOne);
propertyInfoOne.SetValue(objectInstance, myString, null);
PropertyInfo propertyInfoTwo = myType.GetProperty(propertyNameTwo);
propertyInfoTwo.SetValue(objectInstance, myInteger, null);//<---------------
//Call method
myType.InvokeMember("ShowAll",
BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.Public,
null,
objectInstance,
new object[] { "My name is Khan" });
string end = string.Empty;
}
}
}
但 Int32 值不会自动转换为 MyEnum。
在特定行,正在生成异常。
Object of type 'System.Int16' cannot be converted to type 'System.Nullable`1[set_property__Enum_To_Nullable_Enum.MyEnum]'.
怎么做?
编辑
我需要进一步的帮助!
Enum.ToObject() 无法处理 null。
【问题讨论】:
标签: c# reflection .net-2.0