相关疑难解决方法(0)

枚举中定义的项目总数

如何获取枚举中定义的项目数?

.net c# enums

298
推荐指数
8
解决办法
20万
查看次数

如何使用PostSharp属性注入属性?

如何编写PostSharp方面以将属性应用于类?我正在考虑的场景是需要使用DataContract属性进行修饰的WCF实体(或域对象).它也应该有一个Namespace属性.像这样:

using System.Runtime.Serialization;

namespace MWS.Contracts.Search.V1
{
    namespace Domain
    {
        [DataContract(Namespace = XmlNamespaces.SchemaNamespace)]
        public class PagingContext
        {
            [DataMember]
            public int Page { get; set; }

            [DataMember]
            public int ResultsPerPage { get; set; }

            [DataMember]
            public int MaxResults { get; set; }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,您可以看到我想要输出的样子.它具有应用于类的DataContract属性.手工完成这项工作既乏味又不独特.我真的只想编写一个可以应用于我的"域"命名空间的方面.然后它将为我应用序列化相关属性.这样我就可以专注于开发实体对象,而不用担心序列化的细节.

我在PostSharp的网站上找到了用于在方法之前,之后和代替方法注入代码的文档.然而,我正在寻找的是一种将属性注入类型的方法.


这是解决方案!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Runtime.Serialization;
using PostSharp.Aspects;
using PostSharp.Extensibility;
using PostSharp.Reflection;

namespace MWS.Contracts.Aspects
{
    // We set up multicast inheritance so  the aspect is automatically …
Run Code Online (Sandbox Code Playgroud)

.net c# aop postsharp

7
推荐指数
1
解决办法
4604
查看次数

为什么我不能在编译期间获得枚举数?

我问过如何将枚举数量作为常量?,我发现在编译期间我无法获得枚举数,因为C#使用反射来实现.

我读了什么是反射,为什么它有用?所以我对反思有一个非常基本的理解.

为了得到枚举的数量,我可以使用Enum.GetNames(typeof(Item.Type)).Length;,这在运行时使用反射发生.

我没有看到获取枚举计数所需的任何运行时知识,因为据我所知,在运行时期间无法更改枚举的数量.

为什么C#必须使用反射来获取枚举数?为什么不能在编译期间这样做?

c# reflection enums count compile-time

7
推荐指数
2
解决办法
844
查看次数

标签 统计

c# ×3

.net ×2

enums ×2

aop ×1

compile-time ×1

count ×1

postsharp ×1

reflection ×1