public static CodeTypeDeclaration TinyMceSettingsAttribute(
this AssemblyDefinition assembly,
string updateSettingsImplementation,
string matchMethodBody,
string className = "TinyMceSettingsAttribute",
bool overwriteExistingSettings = true)
{
var type = assembly.Class(className)
.Inheriting<Attribute>()
.Implementing<IUpdatePropertySettings<TinyMCESettings>>()
.PublicMethod(x =>
x.Named("UpdateSettings")
.Parameter<TinyMCESettings>("settings")
.Body(updateSettingsImplementation))
.PublicMethod<bool>(x =>
x.Named("MatchesUpdatedSettings")
.Parameter<TinyMCESettings>("settings")
.Body(matchMethodBody))
.PublicMethod<int>(x =>
x.Named("GetSettingsHashCode")
.Parameter<TinyMCESettings>("settings")
.Body("return settings.Width;"))
.Property<bool>(x =>
x.Named("OverWriteExistingSettings")
.Returning(overwriteExistingSettings));
return type;
}
}