PostSharp C# - 如何实现所有必填字段
PostSharp C# - How to Implement All Fields Required
PostSharp 合同可以轻松地将各个字段标记为必填。但我想要一个 class 属性,它使所有 class 字段都成为必填项。我猜我必须实现一个自定义方面来支持这一点。
这似乎是任何传递数据容器的人的普遍需求。谁能指导我一些在 PostSharp 中实现自定义 "AllFieldsRequired" 方面的代码?
您可以实施 PostSharp.Aspects.IAspectProvider
:
public class AllFieldsRequiredAttribute : TypeLevelAspect, IAspectProvider
{
IEnumerable<AspectInstance> IAspectProvider.ProvideAspects(object targetElement)
{
Type type = (Type)targetElement;
return type.GetFields().Select(
m => new AspectInstance(m, new ObjectConstruction(typeof(RequiredAttribute))));
}
}
[AllFieldsRequired]
public class Foo
{
public string Bar;
public object Baz;
}
PostSharp 合同可以轻松地将各个字段标记为必填。但我想要一个 class 属性,它使所有 class 字段都成为必填项。我猜我必须实现一个自定义方面来支持这一点。
这似乎是任何传递数据容器的人的普遍需求。谁能指导我一些在 PostSharp 中实现自定义 "AllFieldsRequired" 方面的代码?
您可以实施 PostSharp.Aspects.IAspectProvider
:
public class AllFieldsRequiredAttribute : TypeLevelAspect, IAspectProvider
{
IEnumerable<AspectInstance> IAspectProvider.ProvideAspects(object targetElement)
{
Type type = (Type)targetElement;
return type.GetFields().Select(
m => new AspectInstance(m, new ObjectConstruction(typeof(RequiredAttribute))));
}
}
[AllFieldsRequired]
public class Foo
{
public string Bar;
public object Baz;
}