这段代码:
Type.GetType("namespace.a.b.ClassName")
Run Code Online (Sandbox Code Playgroud)
回报null
.
我在使用中:
using namespace.a.b;
Run Code Online (Sandbox Code Playgroud)
更新:
类型存在,它在不同的类库中,我需要通过字符串名称来获取它.
我如何在linq中将实体类型作为参数传递?
例如,该方法将接收实体名称值作为字符串,我想将实体名称传递给下面的linq查询.是否可以使linq查询通用?
public ActionResult EntityRecords(string entityTypeName)
{
var entityResults = context.<EntityType>.Tolist();
return View(entityResults);
}
Run Code Online (Sandbox Code Playgroud)
我想将实体类型作为参数传递并返回所有属性值.
此外,是否可以根据某些属性过滤结果?
我想定义一个自定义配置部分,并且有一个属性不会产生字符串,而是一个system.type(如果用户输入了一堆垃圾,则为null)
例如:
<myCustomConfig myAnnoyingType="System.String" />
Run Code Online (Sandbox Code Playgroud)
在C#中(在当前的现实世界中)
[ConfigurationProperty("myAnnoyingType")]
public string MyAnnoyingType
{
get { return (string)this["myAnnoyingType"]; }
}
// else where in the app
var stringType = thatConfig.MyAnnoyingType
var actualType = Type.GetType(stringType);
// wow that was boring.
Run Code Online (Sandbox Code Playgroud)
在C#中(在理想世界中)
[ConfigurationProperty("myAnnoyingType")]
public Type MyAnnoyingType
{
get { return (Type)this["myAnnoyingType"]; }
}
Run Code Online (Sandbox Code Playgroud)
我想要的不是必须将项目保存为C#中的字符串,然后将其转换为应用程序中的Type; 我希望这是作为ConfigurationManager职责的一部分自动完成的.
这可能吗?如果必须的话,我可以使用TypeConverter,只是将它保持为字符串似乎很弱,然后在应用程序中进行类型查找.这不难做到,当我知道我正在寻找一种类型时,似乎毫无意义,必须明确地做它的价值.
从应用程序中的另一个层,我可以获取枚举类型的名称和整数值.如何使用此数据来获取该枚举的该值的字符串表示形式.
例如,如果我有一个枚举:
public enum Cheese
{
Edam = 1,
Cheddar = 3,
Brie = 201,
RedLeicester = 1001
}
Run Code Online (Sandbox Code Playgroud)
我可用的数据是
string dataType = "Cheese";
int dataValue = 3;
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到结果:
"Cheddar"
Run Code Online (Sandbox Code Playgroud) 这是代码:
public class Program
{
public static void Main(string[] args)
{
Test test = new Test();
}
}
public class Test
{
public Test() {
Console.WriteLine("type: " + Type.GetType("Registration"));
}
}
public class Registration
{
public int mAge;
public string mName;
public Registration() {}
}
Run Code Online (Sandbox Code Playgroud)
当它尝试获取类型时Registration
,它返回null.所以,两种.Name
或.AssemblyQualifiedName
无法访问.
AssemblyQualifiedName
只有GetType()
不退货我才能提供null
.
为什么GetType()
返回null?希望问题很清楚.
假设在运行时我得到这样的值:
string expectedDataType = "System.Int32";
object givenValue = "123 Not An Int32";
Run Code Online (Sandbox Code Playgroud)
所以我想知道它的值是否givenValue
与我们期望的类型相同,expectedDataType
所以在这种情况下它应该返回,false
因为该值不是integer
.
如果不是在运行时,我可能可以使用该is
运算符,但我不确定如何reflection
在运行时使用某种操作符来做到这一点。