Сразу укажу пространства имен, с которыми работаю (чтобы не было путаницы)
using Word = Microsoft.Office.Interop.Word;
using Office = Microsoft.Office.Core;
Задача:
получить список свойств документа и работать с ними.
Попытка решения
Office.DocumentProperties customProperties =
(Office.DocumentProperties) wordDoc.CustomDocumentProperties;
Вот тут и выпадает CastException.

Хотя в примерах MSDN сказано, что Word._Document.CustomDocumentProperties возвращает именно свойства документа.
Может кто сталкивался с такой проблемой. Плиз, подскажите решение....

Если что не понятно. обращайтесь.
Только помогите...
Здравствуйте, UnLucky, Вы писали:
UL>Сразу укажу пространства имен, с которыми работаю (чтобы не было путаницы)
UL>UL>using Word = Microsoft.Office.Interop.Word;
UL>using Office = Microsoft.Office.Core;
UL>
UL>Задача:
UL>получить список свойств документа и работать с ними.
UL>Попытка решения
UL>UL>Office.DocumentProperties customProperties =
UL> (Office.DocumentProperties) wordDoc.CustomDocumentProperties;
UL>
UL>Вот тут и выпадает CastException.
UL>Хотя в примерах MSDN сказано, что Word._Document.CustomDocumentProperties возвращает именно свойства документа.
UL>Может кто сталкивался с такой проблемой. Плиз, подскажите решение....
UL>Если что не понятно. обращайтесь.
UL>Только помогите...
private void SetDocProperty(Document doc,string PropertyName,string PropertyValue)
{
object oDocCustomProps=doc.CustomDocumentProperties;
Type typeDocCustomProps = oDocCustomProps.GetType();
try
{
object oDocCustomProp = typeDocCustomProps.InvokeMember("Item",
BindingFlags.Default |
BindingFlags.GetProperty,
//BindingFlags.SetProperty,
null,oDocCustomProps,
new object[] {PropertyName} );
Type typeDocCustomProp = oDocCustomProp.GetType();
typeDocCustomProp.InvokeMember("Value",
BindingFlags.Default |
BindingFlags.SetProperty,
null,oDocCustomProp,
new object[] {PropertyValue});
}
catch(Exception)
{
object[] oArgs = {PropertyName,false,
MsoDocProperties.msoPropertyTypeString,
PropertyValue};
typeDocCustomProps.InvokeMember("Add",BindingFlags.Default |
BindingFlags.InvokeMethod, null,
oDocCustomProps, oArgs );
}
}
private string GetDocProperty(Document doc,string PropertyName)
{
try
{
object oDocCustomProps=doc.CustomDocumentProperties;
Type typeDocCustomProps = oDocCustomProps.GetType();
object oDocCustomProp = typeDocCustomProps.InvokeMember("Item",
BindingFlags.Default |
BindingFlags.GetProperty,
null,oDocCustomProps,
new object[] {PropertyName} );
Type typeDocCustomProp = oDocCustomProp.GetType();
return typeDocCustomProp.InvokeMember("Value",
BindingFlags.Default |
BindingFlags.GetProperty,
null,oDocCustomProp,
new object[] {}).ToString();
}
catch(Exception)
{
return null;
}
}
Все это работает только в рантайме, попытки Save,Close( ref True... не приводят к сохранению изменений в doc-файл. Если кто сумеет закрепить (Apply) изменения, блесните освдомленностью