C# 如何在WP8.1应用程序中使用反射获取命名空间中的所有类?

C# 如何在WP8.1应用程序中使用反射获取命名空间中的所有类?,c#,reflection,windows-runtime,windows-phone-8.1,win-universal-app,C#,Reflection,Windows Runtime,Windows Phone 8.1,Win Universal App,我读过几篇关于如何使用反射获取类的文章,即使StackOverflow中有不同的示例,但没有一篇与此版本的WP或Windows相关,如果您尝试这些代码,它们都不起作用。这是我最后一次尝试: string @namespace = "Supernova.Entities"; var types = Assembly.GetExecutingAssembly().GetTypes() .Where(t => t.IsClass && t.Names

我读过几篇关于如何使用反射获取类的文章,即使StackOverflow中有不同的示例,但没有一篇与此版本的WP或Windows相关,如果您尝试这些代码,它们都不起作用。这是我最后一次尝试:

string @namespace = "Supernova.Entities";

var types = Assembly.GetExecutingAssembly().GetTypes()
    .Where(t => t.IsClass && t.Namespace == @namespace)
    .ToList();

types.ForEach(t => Console.WriteLine(t.Name.GetType()));
我希望有人能给我一个想法,因为当我尝试类似的东西时,VS总是告诉我:“System.Reflection.Assembly”不包含“GetExecutionGassembly”的定义

我正在尝试使用这个,但我不知道如何改变它。

这是我的班级:

namespace Supernova.Entities
{
    public class profile
    {
        [PrimaryKey]
        public string email { get; set; }
        public string firstName { get; set; }
        public string lastName { get; set; }
    }

    public class bloodResults
    {
        [PrimaryKey, AutoIncrement]
        public int idbloodresult { get; set; }
        public double result { get; set; }
    }
}
稍后,我想使用以下方法使用反射创建每个实体:

public static async void CreateDatabase()
{
   var profile = await ConnectionDb().CreateTableAsync<profile>();
   var bloodresults = await ConnectionDb().CreateTableAsync<bloodResults>();
}
公共静态异步void CreateDatabase() { var profile=await ConnectionDb().CreateTableAsync(); var bloodresults=await ConnectionDb().CreateTableAsync(); }
我为什么要这么做?因为这不是我第一次使用SQLite,我想创建一个标准方法来简化我的工作。感谢您的宝贵知识。

GetExecutionGassembly
在WinRT中不可用,但您可以改用
typeof(aclassineyourAssembly).GetTypeInfo().Assembly

    string @namespace = "Supernova.Entities";
    var assembly = typeof(YourClass).GetTypeInfo().Assembly;
    var types = assembly.GetTypes()
        .Where(t => t.GetTypeInfo().IsClass && t.Namespace == @namespace)
        .ToList();

    types.ForEach(t => Console.WriteLine(t.Name));

getExecutionGassembly
在WinRT中不可用,但可以改用
typeof(AClassInYourAssembly).GetTypeInfo().Assembly

    string @namespace = "Supernova.Entities";
    var assembly = typeof(YourClass).GetTypeInfo().Assembly;
    var types = assembly.GetTypes()
        .Where(t => t.GetTypeInfo().IsClass && t.Namespace == @namespace)
        .ToList();

    types.ForEach(t => Console.WriteLine(t.Name));

getExecutionGassembly
在WinRT中不可用,但可以改用
typeof(AClassInYourAssembly).GetTypeInfo().Assembly

    string @namespace = "Supernova.Entities";
    var assembly = typeof(YourClass).GetTypeInfo().Assembly;
    var types = assembly.GetTypes()
        .Where(t => t.GetTypeInfo().IsClass && t.Namespace == @namespace)
        .ToList();

    types.ForEach(t => Console.WriteLine(t.Name));

getExecutionGassembly
在WinRT中不可用,但可以改用
typeof(AClassInYourAssembly).GetTypeInfo().Assembly

    string @namespace = "Supernova.Entities";
    var assembly = typeof(YourClass).GetTypeInfo().Assembly;
    var types = assembly.GetTypes()
        .Where(t => t.GetTypeInfo().IsClass && t.Namespace == @namespace)
        .ToList();

    types.ForEach(t => Console.WriteLine(t.Name));

旁注:由于名称空间与程序集没有正式的关系(即与Java不同),您无法真正“获取名称空间中的所有类”,因为此集合不受任何约束。。。另外,您的意思可能是“…从此命名空间中的程序集”。旁注:由于命名空间与程序集没有正式关系(即,与Java不同),您无法真正“获取命名空间中的所有类”,因为此集合不受任何约束。。。另外,您的意思可能是“…从此命名空间中的程序集”。旁注:由于命名空间与程序集没有正式关系(即,与Java不同),您无法真正“获取命名空间中的所有类”,因为此集合不受任何约束。。。另外,您的意思可能是“…从此命名空间中的程序集”。旁注:由于命名空间与程序集没有正式关系(即,与Java不同),您无法真正“获取命名空间中的所有类”,因为此集合不受任何约束。。。您的意思可能是“…来自此命名空间中的此程序集”,但我应该修改最后的代码吗?因为我不知道如何修改它。很抱歉,我对WP8.1非常陌生,这是我在WP8上使用的最后一段代码,我没有遇到任何问题。@FANM,请查看我的更新答案。顺便说一句,
t.Name.GetType()
将始终是字符串,因此它可能不是您想要的…如果您想要,我已经更新了我的帖子,以显示我正在查找的内容。谢谢你宝贵的时间和帮助。但是我应该修改最后的代码吗?因为我不知道如何修改它。很抱歉,我对WP8.1非常陌生,这是我在WP8上使用的最后一段代码,我没有遇到任何问题。@FANM,请查看我的更新答案。顺便说一句,
t.Name.GetType()
将始终是字符串,因此它可能不是您想要的…如果您想要,我已经更新了我的帖子,以显示我正在查找的内容。谢谢你宝贵的时间和帮助。但是我应该修改最后的代码吗?因为我不知道如何修改它。很抱歉,我对WP8.1非常陌生,这是我在WP8上使用的最后一段代码,我没有遇到任何问题。@FANM,请查看我的更新答案。顺便说一句,
t.Name.GetType()
将始终是字符串,因此它可能不是您想要的…如果您想要,我已经更新了我的帖子,以显示我正在查找的内容。谢谢你宝贵的时间和帮助。但是我应该修改最后的代码吗?因为我不知道如何修改它。很抱歉,我对WP8.1非常陌生,这是我在WP8上使用的最后一段代码,我没有遇到任何问题。@FANM,请查看我的更新答案。顺便说一句,
t.Name.GetType()
将始终是字符串,因此它可能不是您想要的…如果您想要,我已经更新了我的帖子,以显示我正在查找的内容。谢谢你宝贵的时间和帮助。