gpt4 book ai didi

c# - 从一组 foowriter 类型的类中检索公共(public)属性

转载 作者:行者123 更新时间:2023-12-02 04:34:55 25 4
gpt4 key购买 nike

我有一组类都扩展了同一个基类,比方说 fooboo : foowriter, foobar : foowriter .这些所有具有不同扩展名的输出文件,比如说 fooboo --> .boofoobar --> .bar文件。

我正在使用反射来获取扩展 foowriter 的所有具体类型的列表,我需要获取这些类可以生成的所有扩展的列表,即 { ".boo", ".bar" }

此刻每个foowriter知道它可以产生什么格式,这是一个只读字段。我热衷于将这些知识封装在每个具体类中,而不是实现 GetOutputExtension<T>() : where T : foowriter一些额外类中的方法,因为这将耦合所有 foowriter s 与那个额外的实用程序类。

我真的不想实例化具体类,因为那可能是一个重量级的操作。

在不实例化一组类型的情况下从一组类型中获取公共(public)属性的好模式或方法是什么?

最佳答案

一种选择是创建自定义属性。这样您就可以将扩展与您的类相关联,而无需实例化它们。

用法:

[Output(Extension = ".boo")]
public class fooboo : foowriter { ... }

[Output(Extension = ".bar")]
public class foobar : foowriter { ... }

缺点是这不会在编译时强制执行。

编辑:但是,您可以为其编写单元测试。

关于c# - 从一组 foowriter 类型的类中检索公共(public)属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22185923/

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