我正在使用C#开发移动应用程序(Monotouch,monodroid).我有一个这个定义的类:
public class TempIOAddOn : BaseIOAddOn
{
public TempIOAddOn ()
{
}
}
Run Code Online (Sandbox Code Playgroud)
我使用此代码通过其字符串名称访问类的实例:
BaseIOAddOn tempIOAddOn;
Type t= Type.GetType("TempIOAddOn" );
tempIOAddOn = (BaseIOAddOn)Activator.CreateInstance(t);
Run Code Online (Sandbox Code Playgroud)
但是在执行之后,t是null.
我也试过下面的代码:
BaseIOAddOn tempIOAddOn;
tempIOAddOn = (BaseIOAddOn )System.Reflection.Assembly.GetExecutingAssembly().CreateInstance("TempIOAddOn" );
Run Code Online (Sandbox Code Playgroud)
但我再次面对null.tempIOAddOn是null.
我是怎么了?
假设我有这个枚举:
namespace BusinessRule
{
public enum SalaryCriteria : int
{
[EnumDisplayName(DisplayName = "Per Month")]
Per_Month = 1,
[EnumDisplayName(DisplayName = "Per Year")]
Per_Year = 2,
[EnumDisplayName(DisplayName = "Per Week")]
Per_Week = 3
}
}
Run Code Online (Sandbox Code Playgroud)
我的名字在一个字符串变量中,如:
string EnumAtt = "SalaryCriteria";
Run Code Online (Sandbox Code Playgroud)
我试图检查这个枚举是否由这个名称定义,如果定义我想得到它的instance.i尝试这样,但type返回null:
string EnumAtt = "SalaryCriteria";
Type myType1 = Type.GetType(EnumAtt);
Run Code Online (Sandbox Code Playgroud)
我也试过这个:
string EnumAtt = "BusinessRule.SalaryCriteria";
Type myType1 = Type.GetType(EnumAtt);
Run Code Online (Sandbox Code Playgroud)
任何想法我怎么能实现这一点.
我有一个类型名称作为输入传递."MyApp.Modules.Common.contact".
使用Activator.CreateInstance我如何在我正在使用的方法中构造此类型.如果我这样做的话
Type typ = Type.GetType("MyApp.Modules.Common.contact")
Run Code Online (Sandbox Code Playgroud)
典型值始终为空.我该如何解决.请帮忙.
我的函数将枚举类型获取为字符串,我需要对其进行验证。
为什么parsedType(s)在这里为null?
var parsedType1 = Type.GetType("System.Windows.TextAlignment.Left");
var parsedType2 = Type.GetType("System.Windows.TextAlignment");
Run Code Online (Sandbox Code Playgroud)
虽然这个有效吗?
var parsedType3 = Type.GetType("System.String");
Run Code Online (Sandbox Code Playgroud)