gpt4 book ai didi

c# - 在 C# 中动态定义结构

转载 作者:行者123 更新时间:2023-11-30 20:48:53 24 4
gpt4 key购买 nike

我正在尝试在 C# 中动态定义一个结构,该结构基于具有成员名称和类型列表的给定输入文件。为了这个问题,假设文件具有以下布局:


[Struct Name 1]
parameter1, type1, typical_value1
parameter2, type2
parameter3, type1

[Struct Name 2]
... etc

我一直在阅读 this post一段时间以来,还没有在 C# 中实现它——我的问题是,这可以做到吗?此外,是否可以在不使用 unsafe 的情况下完成?

我最初想坚持使用结构的原因是因为我将使用它来序列化通过 I/O 接收的 byte[],以及我拥有的扩展方法现在可以完美地用于静态定义的结构;但是我愿意为包装类重写它以使其更容易。

我的想法是,根据用户知道的通过 I/O 连接的内容,我可以选择多个文件之一作为解析源。换句话说,文件可以在运行时更改,但一次只能选择一个文件。

最佳答案

是的,从技术上讲这是可以做到的 - 但不是以一种非常有用的方式。您将不得不使用 TypeBuilder 在运行时创建类型(这非常复杂),但下一个问题是很难与仅在运行时已知的类型对话。通常这是通过 object 或接口(interface)完成的——但这两者都需要对 struct 进行装箱,这使得 struct 不是很有用> 首先。唯一的解决方法是通过 T 泛型(然后可以使用“约束”模型来避免装箱)——你需要这样的方法:

Foo<T>(T data);

Foo<T>(T[] data);

您通过 methodInfo.MakeGenericMethod(...).Invoke(...) 切换到。

关于c# - 在 C# 中动态定义结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24119967/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com