我有一个代码生成的类,它在属性上有一组属性。我想为这些属性添加其他属性,但我不能在代码生成的类上执行此操作。因此,我使用MetadataTypeAttribute
来装饰辅助类的其他属性;
// Code generated class - can't touch this
public partial class MyClass
{
public MyType MyProperty { get; set; }
}
// Partial class allowing extended attributes
[MetadataType(typeof(MyClass_AdditionalAttributes))]
public partial class MyClass
{
}
// Defines extra attributes to be appended to
// properties that match in the partial class
public class MyClass_AdditionalAttributes
{
// Do not serialise the MyProperty property
[XmlIgnore]
public MyType MyProperty;
}
然而,这不起作用。使用.NET反射器,XmlIgnoreAttribute
未装饰到MyClass.MyProperty
属性。谁能看到我做错了什么?
答案 0 :(得分:0)
我遇到了同样的问题(使用 ScriptIgnore 而不是 XMLIgnore )并且无法使其正常工作。最后,我将设计器属性设为私有,并在外部分部类中使用我想要的属性定义公共属性,只需获取并设置私有属性。