void DefineProperty(TypeBuilder typeBuilder, Property property)
{
var name = property.ExplicitInfo != null
? property.ExplicitInfo.InterfaceType.Name + "." + property.Name
: property.Name;
var builder = typeBuilder.DefineProperty(name,
PropertyAttributesFor(property),
GetSystemType(property.Type),
GetParameterTypes(property.Parameters));
var getter = property.Getter;
if (getter != null)
builder.SetGetMethod(DefinePropertyAccessor(typeBuilder, property, getter));
var setter = property.Setter;
if (setter != null)
builder.SetSetMethod(DefinePropertyAccessor(typeBuilder, property, setter));
if (GetEntity(property).IsDuckTyped)
builder.SetCustomAttribute(CreateDuckTypedCustomAttribute());
SetBuilder(property, builder);
}