得到的東西到底感謝羅伯特的回答在工作 - 這是相當哈克,但似乎工作,所以我要離開這裏的情況下,它可以幫助別人。
注意,它採用的是貶值的事件處理程序和反射來設置私有變量,所以我不建議任何人使用它,但它可能會給人一個想法從哪裏開始:
public void MediaService_Creating(IMediaService sender, NewEventArgs<IMedia> e)
{
int i = 0;
Type t = e.Entity.GetType();
FieldInfo[] fields = t.GetFields(BindingFlags.NonPublic | BindingFlags.Instance);
FieldInfo field = fields.First(x => x.Name == "_contentType");
MethodInfo findMediaTypeByAlias = ApplicationContext.Current.Services.MediaService
.GetType().GetMethod("FindMediaTypeByAlias", BindingFlags.NonPublic | BindingFlags.Instance);
IMediaType mediaType = (IMediaType)findMediaTypeByAlias.Invoke(
ApplicationContext.Current.Services.MediaService,
new object[] { Constants.Conventions.MediaTypes.Image });
field.SetValue(e.Entity, mediaType);
field = fields.First(x => x.Name == "ContentTypeBase");
field.SetValue(e.Entity, mediaType);
i = e.Entity.ContentTypeId;
}
基本前提是在創建媒體類型的同時將媒體類型更改爲圖像。通過以這種方式更改它,可以添加和自動填充圖像媒體類型的任何其他屬性。如果自定義媒體類型的屬性與其中一個圖像媒體類型屬性(如umbracoFile)共享一個別名,則會自動填充該屬性值,這意味着可以根據需要在任何保存/保存的事件偵聽器中使用該屬性值。
謝謝 - 你的回答引起我失望的是工作路線,雖然我不知道這是你腦子裏想的是什麼相當。 –
只要你到達你的目的地,一切都好:) –