1
我想要做的是將現有的attributes
從一個property
複製到另一個。 這裏是我的代碼現在:有沒有辦法在運行時獲得構造函數的參數值
foreach (var prop in typeof(Example).GetProperties())
{
FieldBuilder field = typeBuilder.DefineField("_" + prop.Name, prop.PropertyType, FieldAttributes.Private);
PropertyBuilder propertyBuilder =
typeBuilder.DefineProperty(prop.Name,
PropertyAttributes.HasDefault,
prop.PropertyType,
null);
object[] attributes = prop.GetCustomAttributes(true);
foreach (var attr in attributes)
{
//Here I need to get value of constructor parameter passed in declaration of Example class
ConstructorInfo attributeConstructorInfo = attr.GetType().GetConstructor(new Type[]{});
CustomAttributeBuilder customAttributeBuilder = new CustomAttributeBuilder(attributeConstructorInfo,new Type[]{});
propertyBuilder.SetCustomAttribute(customAttributeBuilder);
}
}
它的工作,但僅適用於attributes
具有參constructor
。 例如「DataTypeAttribute」只有constructors
和parameter
。
現在我想知道如果有一種方式來獲得的attribute
constructor
電流值比方說,我有這樣的模式:
public class Example
{
public virtual int Id { get; set; }
[Required]
[MaxLength(50)]
[DataType(DataType.Text)]
public virtual string Name { get; set; }
[MaxLength(500)]
public virtual string Desc { get; set; }
public virtual string StartDt { get; set; }
public Example()
{
}
}
現在我能夠copy
只RequiredAttribute
因爲它有無參數constructor
。我無法copy
DataTypeAttribute
。所以我想從我的示例模型中獲得這個value
DataType.Text
。
任何人有一些想法如何使它工作?
注意:當只有無參數的構造函數時GetCustomAttributeData()返回1 AttributeData – harry180
@ harry180這不正是它應該返回的內容嗎? – svick
你能解釋爲什麼它應該'返回''AttributeTarget'無參數'構造函數'對我來說很奇怪。我認爲它會'返回'null'或者空數組'。 – harry180