2016-04-05 11 views
1

タイプclass1のオブジェクトのSelectedObjectを持つPropertyGridがあります。PropertyDescriptorCollection - オブジェクトがターゲットタイプと一致しません

私はclass1オブジェクトのICustomTypeDescriptorインタフェースを実装しています、と私は別のオブジェクトclass2からPropertyDescriptorCollectionを取得し、PropertyGridのにclass2PropertyDescriptorsを表示するだけでなく、class1PropertyDescriptorsする必要がしています。

私はclass2PropertyDescriptorsためにPropertyGridのに表示され、次のエラーを取得しています:

オブジェクトは、ターゲット・タイプと一致していません。ここで

class2PropertyDescriptorsせずに動作します私のコードです:ここでは

public PropertyDescriptorCollection GetProperties(Attribute[] attributes) 
{ 
    PropertyDescriptorCollection propertyDescriptorCollection = TypeDescriptor.GetProperties(this); 
    var propertyDescriptors = new List<PropertyDescriptor>(); 
    for (int i = 0; i < propertyDescriptorCollection.Count; i++) 
    { 
     propertyDescriptors.Add(propertyDescriptorCollection[i]); 
    } 
    return new PropertyDescriptorCollection(propertyDescriptors.ToArray()); 
} 

は、私が働いているコードです:

public PropertyDescriptorCollection GetProperties(Attribute[] attributes) 
{ 
    PropertyDescriptorCollection propertyDescriptorCollection = TypeDescriptor.GetProperties(this); 
    var propertyDescriptors = new List<PropertyDescriptor>(); 
    for (int i = 0; i < propertyDescriptorCollection.Count; i++) 
    { 
     propertyDescriptors.Add(propertyDescriptorCollection[i]); 
    } 
    var class2PropertyDescriptorCollection = TypeDescriptor.GetProperties(class2); 
    for (int i = 0; i < class2PropertyDescriptorCollection.Count; i++) 
    { 
     propertyDescriptors.Add(class2PropertyDescriptorCollection[i]); 
    } 
    return new PropertyDescriptorCollection(propertyDescriptors.ToArray()); 
} 

私はclass2からPropertyDescriptorsを表示することができますどのように、 からclass1までがPropertyGridに表示されていますか?

答えて

0

propertyDescriptorCollectionをPropertyDescriptorCollectionタイプとして宣言しましたが、class2PropertyDescriptorCollectionにはvarを使用しています。次の場合はどうなりますか:

public PropertyDescriptorCollection GetProperties(Attribute[] attributes) 
{ 
    PropertyDescriptorCollection propertyDescriptorCollection = TypeDescriptor.GetProperties(this); 
    var propertyDescriptors = new List<PropertyDescriptor>(); 
    for (int i = 0; i < propertyDescriptorCollection.Count; i++) 
    { 
     propertyDescriptors.Add(propertyDescriptorCollection[i]); 
    } 
    PropertyDescriptorCollection class2PropertyDescriptorCollection = TypeDescriptor.GetProperties(class2); 
    for (int i = 0; i < class2PropertyDescriptorCollection.Count; i++) 
    { 
     propertyDescriptors.Add(class2PropertyDescriptorCollection[i]); 
    } 
    return new PropertyDescriptorCollection(propertyDescriptors.ToArray()); 
} 
関連する問題