반사

2014-10-23 3 views
0

난 다음 COM 개체가 있습니다반사

public interface ParagraphFormat2 : _IMsoDispObj 
{ 
    [DispId(2)] 
    MsoParagraphAlignment Alignment { get; set; } 
    [DispId(1610743808)] 
    object Application { get; } 
    [DispId(3)] 
    MsoBaselineAlignment BaselineAlignment { get; set; } 
    [DispId(4)] 
    BulletFormat2 Bullet { get; } 
    } 

내가 총알 속성을 설정해야합니다, 그래서 반사를 사용하는 것이 피곤하지만, 실패입니다 : 를 - 첫 번째 시도 :

PropertyInfo prop = typeof(Microsoft.Office.Core.ParagraphFormat2) 
         .GetProperty("Bullet", BindingFlags.Public | 
              BindingFlags.Instance | 
              BindingFlags.GetProperty); 

if (null != prop && prop.CanWrite) 
{ 
    prop.SetValue(objParagraphFormat, bullet, null); 
} 

두 번째 시도 :

typeof(Microsoft.Office.Core.ParagraphFormat2) 
        .GetField("Bullet", BindingFlags.PutDispProperty | 
             BindingFlags.PutRefDispProperty) 
        .SetValue(objParagraphFormat, new object[] { bullet }); 

어떻게 할 수 있습니까?

답변

0

를 사용합니다. 그래서 같이

:

objParagraphFormat.Bullet.Type = MsoBulletType.msoBulletUnnumbered; 
objParagraphFormat.Bullet.Visible = MsoTriState.True; 

그것은 당신이하고있는 일을하기 위해 반사를 사용할 필요는 없습니다.

설명 : Bullet 개체는 자체적으로 독립적으로 존재하지 않으며, 유일한 목적은 다양한 목록 및 글 머리 관련 단락 속성에 대한 편리한 그룹입니다.

다른 말로 표현하면, 실제로는 단락의 모든 속성입니다. 글 머리 기호 개체가 존재하기 때문에 조금 더 깔끔하고 읽기 쉽습니다.