从 C# 中的自定义字段属性获取值

2023-12-25

今天早上,我开始了我认为使用自定义字段属性的快速练习。在尝试了很多事情并搜索了很多示例(大多数涉及类而不是字段属性)之后,我正式陷入困境。

我的代码如下。一个特点是该类是使用类构建器在 FileHelpers 中构建的。我的各种部分成功的尝试确实设法从此类中获取字段名,所以我相信该部分工作正常。

我想要做的(根据代码中的注释)是 a) 运行字段,b) 对于每个字段,查看 DBDataTypeAttribute 属性是否存在,以及 c) 看似最困难的部分 - 从属性获取值(FieldType 字符串)和AllowNulls 布尔值)。

任何意见表示赞赏!

Mark

class Program
{
    static void Main(string[] args)
    {
        // Desired output:
        System.Type userType = null;
        userType = ClassBuilder.ClassFromString(@"
                                                public class ExpenseReport
                                                {
                                                    [FieldQuoted('""', QuoteMode.OptionalForRead, MultilineMode.AllowForRead)]
                                                    [DBDataTypeAttribute(FieldType = ""varchar(1000)"", AllowNulls = true)]
                                                    public String UniqueID;
                                                    [FieldQuoted('""', QuoteMode.OptionalForRead, MultilineMode.AllowForRead)]
                                                    public String ERNum;
                                                }");

        object[] attributes;
        attributes = userType.GetCustomAttributes(typeof(DBDataTypeAttribute), true);
        foreach (Object attribute in attributes)
        {
            // Would like to be able to ID for each field whether the DBDataTypeAttribute is present, and get the FieldType and AllowNulls Values

            DBDataTypeAttribute a = (DBDataTypeAttribute)attribute;
            Console.WriteLine("Attribute: ", a.FieldType);
            Console.ReadLine();

        }
    }
}

[AttributeUsage(AttributeTargets.Field)]
public class DBDataTypeAttribute : System.Attribute
{
    private string fieldtype;
    public string FieldType
    {
        get { return fieldtype; }
    }

    private string allownulls;
    public string AllowNulls
    {
        get { return allownulls; }
    }

}

很简单;你必须从字段中获取它们,而不是类型。

foreach( FieldInfo field in userType.GetFields() )
{
    DBDataTypeAttribute attribute = (DBDataTypeAttribute)Attribute.GetCustomAttribute(field, typeof(DBDataTypeAttribute));
    if( attribute != null )
    {
        // Do something with it.
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 C# 中的自定义字段属性获取值 的相关文章

  • C++ std::accumulate 没有给出预期的总和

    double numbers 1 0 5 0 333333 0 25 0 2 0 166667 0 142857 0 125 0 111111 0 1 std vector
  • 为 DocumentDb 设置自定义 json 转换器

    我正在使用类型化 DocumentQuery 从 Azure DocumentDb 集合中读取文档 from f in client CreateDocumentQuery
  • 与 MinGW 的静态和动态/共享链接

    我想从一个简单的链接用法开始来解释我的问题 假设有一个图书馆z它可以编译为共享库 libz dll D libs z shared libz dll 或静态库 libz a D libs z static libz a 让我想要链接它 然后
  • 如何使用T4从一个模板同时生成两个文件?

    我遇到的情况是 我需要生成两个 CSharp 代码文件 它们的代码几乎相同 但方法的输入和输出类型的命名空间不同 事实上 每个文件都针对特定国家 地区 并且类型来自特定国家 地区的 WSDL 我正在围绕服务编写一些包装器 逻辑完全相同 但从
  • 如何在 C# 中以编程方式将行添加到 DataGrid?

    正如标题所述 我正在尝试使用 C 以编程方式将行添加到 DataGrid 但我似乎无法使其工作 这是我到目前为止所拥有的 I have a DataGrid declared as dg in the XAML foreach string
  • 用于 C++ 中图像分析的 OpenCV 二进制图像掩模

    我正在尝试分析一些图像 这些图像的外部周围有很多噪声 但内部有一个清晰的圆形中心 中心是我感兴趣的部分 但外部噪声正在影响我对图像的二进制阈值处理 为了忽略噪音 我尝试设置一个已知中心位置和半径的圆形蒙版 从而使该圆之外的所有像素都更改为黑
  • 从图像创建半透明光标

    是否可以从图像创建光标并使其半透明 我目前正在拍摄自定义图像并覆盖鼠标光标图像 如果我可以将其设为半透明 那就太好了 但不是必需的 销售人员喜欢闪亮的 目前正在做这样的事情 Image cursorImage customImage Get
  • 如何在 C++ 中正确使用 cin.fail()

    我正在编写一个程序 从用户那里获取整数输入cin gt gt iUserSel 如果用户输入一个字母 程序就会进入无限循环 我试图用下面的代码来阻止这种情况 但程序进入无限循环并打印出 错误 输入 我该如何修复我的程序 cin gt gt
  • 使用任一默认捕获模式时,这是通过复制捕获还是 (*this) 通过引用捕获?是一样的吗?

    当我看到以下工作时我有点困惑 struct A void g void f g 但后来我发现this https stackoverflow com a 16323119 5825294答案非常详细地解释了它是如何工作的 本质上 它归结为t
  • MINIX内部碎片2

    我正在用 C 语言编写一些软件 它递归地列出给定目录中的所有文件 现在我需要计算出内部碎片 我花了很长时间研究这个问题 发现 ext2 上的内部碎片只发生在最后一个块中 我知道理论上你应该能够从索引节点号获得第一个和最后一个块地址 但我不知
  • 如何在Windows窗体中打开进程

    我想在我的 Windows 窗体应用程序中打开进程 例如 我希望当用户按下 Windows 窗体容器之一中的按钮时 mstsc exe 将打开 如果他按下按钮 它将在另一个容器上打开 IE DllImport user32 dll SetL
  • 如何在VS2005中使用从.bat而不是.exe启动的外部程序进行调试?

    在我的 c 项目的调试属性中 我选择了 启动外部程序 并选择了我希望将调试器附加到的程序的 exe 但是 现在我需要从 bat 文件而不是 exe 启动程序 但 VS2005 似乎不允许这样做 这可能吗 编辑 为了澄清 我需要调试从 bat
  • 在 Visual Studio 2012 Express 中设置 C++ 调试环境

    我需要调试的应用程序需要设置环境变量 这在 Visual Studio 2012 中似乎非常复杂 我想做类似的事情 set path c foo c bar c windows c program files application set
  • 为什么我可以在另一个函数中定义一个函数?

    请参阅下面的代码 我在另一个函数中定义了一个函数 void test1 void void test2 void printf test2 n printf test1 n int main void test1 return 0 这个用法
  • 尝试后终于没有被调用

    由于某种原因 在我的控制台应用程序中 我无法运行我的finally 块 我编写这段代码是为了测试finally块是如何工作的 所以它非常简单 static void Main int i 0 try int j 1 i Generate a
  • C++ 中的析构函数

    我的 AB h 文件中有一个构造函数 class AB private int i public AB i 0 constructor AB i 0 destructor virtual void methodA unsigned int
  • 使用通用存储库模式和流畅的 nHibernate

    我目前正在开发一个中型应用程序 它将访问不同站点上的 2 个或更多 SQL 数据库等 我正在考虑使用类似的东西 http mikehadlow blogspot com 2008 03 using irepository pattern w
  • java有类似C#的属性吗? [复制]

    这个问题在这里已经有答案了 C 属性 我的意思是 get 和 set 方法 是一个非常有用的功能 java 也有类似 C 的属性吗 我的意思是我们如何在 java 中实现类似以下 C 代码的内容 public string Name get
  • 如何将模型绑定到动态创建的类 nancyfx

    首先感谢任何愿意查看我的问题的人 我对 Nancyfx 还很陌生 在尝试将 JSON 有效负载绑定到动态创建的类时遇到问题 我按照这篇文章中的代码动态创建了该类 在C 中动态创建一个类 https stackoverflow com que
  • 如何使用 Microsoft Graph API 更新 MailboxSettings

    我想从不同的日历更新邮箱设置 如何构建可以通过 Microsoft Graph 更新 MailboxSetting 的请求 这是我的代码示例 但有例外 代码示例 User obj GraphServiceClient Users roomC

随机推荐

  • 事件循环中有哪些类型的队列?

    我面临着提及render queue在不同的文章中 example https blog usejournal com welcoming javascript 57e1051d9d example https medium com ati
  • 如何改变约束

    SQL 如何更改约束 下面是我的约束之一 CONSTRAINT ACTIVEPROG FKEY1 FOREIGN KEY ActiveProgCode REFERENCES PROGRAM ActiveProgCode 我想添加 ON DE
  • 这段代码片段中是如何进行递归的?

    看看调用堆栈和监视 现在当我按 F10 时 监视 中的行值更改为 对象对象 因此一切都发生了 直到此时我才理解流程 之后发生的事情不清楚 现在 为什么即使我在第 8 行提供断点 代码也不会在第 8 行停止 This is the quest
  • 在 REST 中,为每个资源表示创建单个内容类型还是具有单独的内容类型?

    如果我想遵循为 REST API 使用自定义内容类型的做法 我是否应该为整个项目定义单个自定义内容类型 或者为每个资源表示 发送到 返回的内容 定义自定义内容类型 REST API 在我的项目中使用 也就是说 如果我正在构建一个 Books
  • 在 ReactJS 中处理未定义值的最佳方法?

    我正在使用 ReactJS 访问 API 当 React 组件访问 API 提供的对象中可能 未定义 的属性时 阻止 React 组件崩溃的最佳方法是什么 错误的一个例子是 类型错误 无法读取未定义的属性 项目 您似乎正在尝试访问该属性it
  • 运行鼻子测试时出错

    我最近重新安装了nose对我的代码运行测试 https nose readthedocs org en latest https nose readthedocs org en latest I used sudo pip install
  • Cordova / Ionic:在设备上模拟或运行时未处理 $http 请求

    上周一切都很顺利 当我在设备上运行应用程序或使用 Genymotion 进行模拟时 对 api 的所有调用都正常工作 要么返回数据 要么失败 但至少显示一些内容 我正在使用 ionic run android 我添加更新全局科尔多瓦离子 n
  • 如何禁用 AdMob 日志?

    我知道发布带有日志的应用程序不是一个好的做法 因此我禁用了所有日志调用 现在 AdMob 每次显示广告时都会记录日志 我该如何取消呢 我似乎在文档中找不到有关此主题的任何信息 并且我读到您可以使用ProGuard http proguard
  • 如何屏蔽 cpu 不受 linux 调度程序的影响(防止它调度线程到该 cpu 上)?

    可以使用sched setaffinity将线程固定到 CPU 提高性能 在某些情况下 来自 Linux 手册页 限制进程在单个 CPU 上运行还可以避免 缓存失效导致的性能成本 进程停止在一个 CPU 上执行 然后在另一个 CPU 上重新
  • cverror android 断言失败 (scn == 3) Android

    我正在尝试对 Android 中的图像 位图 使用自适应阈值 这需要将其更改为 Mat 然后将其转换为灰度 下面是我从创建位图开始的代码 它们被命名为裁剪 因为我刚刚裁剪了之前的照片 Bitmap bmCrop BitmapFactory
  • 检测网络浏览器是否重定向

    我正在寻找一种方法 WebBrowser 实例可以检测当前页面是否要重定向 或者 如果在页面最初加载时弹出广告 然后转到实际的 URL 我正在寻找一种方法来检测它 有人有什么想法吗 Thanks 您可以使用 WebBrowser 控件的 N
  • PDO多过滤sql查询

    有没有一种更简单的方法可以让我编写代码并执行相同的操作 而不必进行这么多查询 我正在尝试添加分页 此处未包含在代码中 它适用于我的 ALL 查询 但 AND OR 查询给出了有趣的结果 并且变得令人头疼 除此之外 结果过滤工作完美 只需要分
  • Android Studio:添加文件后如何“刷新”?

    我正在尝试向 Android 项目添加布局 右键单击了res folder New Directory 该目录已创建 但未显示在app res 也许是因为默认情况下隐藏空目录 转到 Windows 资源管理器并将文件添加到新创建的目录 隐藏
  • 更改子列表中的字符

    我已经知道这是一个非常愚蠢的问题 我尝试查找答案 但我几乎不知道该问什么 抱歉 如果标题有点模糊 但我走了 我有一个单词列表 我想去掉列表中的坏角色 List I Can Not Do It BadChars for word in Lis
  • 如何开始使用 dockerode

    我计划在 docker 中运行我的应用程序 我想在 docker 容器上动态启动 停止 构建 运行命令 我发现了一个名为 dockerode 的工具 Here https github com apocas dockerode是项目存储库
  • 有没有办法在 J2EE 服务器启动上做一些事情?我正在使用 Tomcat [重复]

    这个问题在这里已经有答案了 我正在尝试让 J2EE 服务器主动向另一台服务器注册 即发送一些消息 而不是作为对某些内容的响应 令人惊讶的是 我发现很少有关于是否有事件和 或类可以扩展的信息或问题 这些事件和 或类可以让我处理 服务器启动 我
  • 如何解决“错误:scalac:类文件‘package.class’中遇到对 scala.ScalaObject 的错误符号引用”?

    当我尝试运行该项目时 我遇到此错误消息 Error scalac bad symbolic reference to scala ScalaObject encountered in class file package class Can
  • 在数组上调用 .length 与保存大小变量的性能有区别吗?

    我正在创建一个模拟程序 我希望代码能够得到非常优化 现在我有一个数组 它在我使用的各种 for 循环中进行了多次循环 for int i 0 i
  • ') 和 $('p') 有什么区别' aria-label='jQuery $('

    ') 和 $('p') 有什么区别'> jQuery $('

    ') 和 $('p') 有什么区别

    有人可以向我解释一下两者之间的区别吗 p and p 在 jQuery 中 例如 如果我写 body append p p html hello my friend 然后出现文本 你好我的朋友 然而 当我写 body append p ht
  • 从 C# 中的自定义字段属性获取值

    今天早上 我开始了我认为使用自定义字段属性的快速练习 在尝试了很多事情并搜索了很多示例 大多数涉及类而不是字段属性 之后 我正式陷入困境 我的代码如下 一个特点是该类是使用类构建器在 FileHelpers 中构建的 我的各种部分成功的尝试