程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用节点填充 C# 类型和属性的邻接列表大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决使用节点填充 C# 类型和属性的邻接列表?

开发过程中遇到使用节点填充 C# 类型和属性的邻接列表的问题如何解决?下面主要结合日常开发的经验,给出你关于使用节点填充 C# 类型和属性的邻接列表的解决方法建议,希望对你解决使用节点填充 C# 类型和属性的邻接列表有所启发或帮助;

我的问题与 this one 类似,但我有类似 200 个类,这些类都是使用 { 从 XML 模式自动生成的[1] {3}},最佳答案建议使用自定义属性标记每个类。这将花费很长时间,所以我想通过深度优先搜索更具启发性地进行。

所有生成的类型(有类和枚举)都在五个命名空间内,@R_781_9447@简单地使用 SomeType.namespace == "mynamespace" 进行检查。没有循环依赖或组合——所有的类都包含在上面提到的五个命名空间中定义的类型的实例变量,最简单的类最终归结为包含一个数字/布尔原语,一个StringenumSystem.Collections.ObjectModel.Collection<>

我目前有以下代码:

private static Readonly Assembly MyAssembly = Assembly.Load("Mylib");
private static Readonly IEnumerable<Type> myTypes = MyAssembly.GetTypes();
private static Readonly IEnumerable<Type> MyClasses = myTypes.Where(type => type.IsClass);
private static Dictionary<Type,PropertyInfo[]> myTypePropertIEsAndnames = MyClasses.ToDictionary(type => type,type => type.GetPropertIEs());

public static voID Main()
{
    GenerateAdjList();
}

public static linkedList<String> GenerateAdjList()
{
    // what do I fill in here to return a fully-populated linkedList?
}

我注意到 myTypePropertIEsAndnames 已经是某种尚未完全填充的“邻接列表”,所以我想知道如何使用该 Dictionary 创建一个完整的邻接列表。

链接问题中提到的一些问题是如何处理 List<>s(在我的例子中是 Collection<>s)和原始类型;我打算在点分隔的字符串中添加一对方括号,以向用户表示他们必须指定一个索引


一个附录:给定一个在 5 个命名空间之一中定义类型的特定对象,我理想地希望将对象的整个结构生成为 Lookup<> 的各种类型,以便当用户指定对象的子属性的名称,返回该子属性的所有可能路径。

假设我有以下类定义:

public class message 
{
    public Flight Flight {get; set;}
    // ... other propertIEs
}

public class Flight 
{
    public Arrival Arrival {get; set;}
    public Departure Departure {get; set;}
    // ... other propertIEs
}

public class Arrival 
{
    public Aerodrome Aerodrome {get; set;}
    // ... other propertIEs
}

public class Departure
{
    public Aerodrome Aerodrome {get; set;}
    // ... other propertIEs
}
...

如果用户执行类似 GetPropertyChains(message,"Aerodrome") 的操作,那么 "message.Flight.Arrival.Aerodrome""message.Flight.Departure.Aerodrome" 都应该返回。

我该如何解决这些问题?


[1]这些模式是 ICAO XmlscheR_553_11845@aClassGenerator 规范的一部分。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

大佬总结

以上是大佬教程为你收集整理的使用节点填充 C# 类型和属性的邻接列表全部内容,希望文章能够帮你解决使用节点填充 C# 类型和属性的邻接列表所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。