문제

추가 기능을 내 프로젝트는 사용자가 허용을 추가 자신의 사용자 정의 속성을 개체입니다.내가 만들어 내 자신의 사용자 정의 TypeDescriptor, PropertyDescriptorTypeDescriptorProviders 등등....등등....니다.

여기에 내 문제입니다.지금은 그 모든 작업,그러나 별도로 만들어야 했 TypeDescriptionProvider 각 개체에 대한 개체 유형을 가질 수 있는 사용자 정의 속성입니다.여기에 나 TypeDescriptionProviders

//type AClass Custom Provider
class AClassTypeProvider : TypeDescriptionProvider
{
    private static TypeDescriptionProvider defaultTypeProvider = TypeDescriptor.GetProvider(typeof(AClass));

    public AClassTypeProvider (): base(defaultTypeProvider)
    {

    }

    public override ICustomTypeDescriptor GetTypeDescriptor(Type objectType, object instance)
    {
        ICustomTypeDescriptor defaultDescriptor = base.GetTypeDescriptor(objectType, instance);

        //returns a custom type descriptor based on a UserPropertyHostType enum value, and the default descriptor
        return new InfCustomTypeDescriptor(UserPropertyHostType.SiteRegion, defaultDescriptor);
    }
}


//type BClass Custom Provider
class BClassTypeProvider : TypeDescriptionProvider
{
    private static TypeDescriptionProvider defaultTypeProvider =   TypeDescriptor.GetProvider(typeof(BClass));

    public BClassTypeProvider (): base(defaultTypeProvider)
    {

    }

    public override ICustomTypeDescriptor GetTypeDescriptor(Type objectType, object instance)
    {
        ICustomTypeDescriptor defaultDescriptor = base.GetTypeDescriptor(objectType, instance);

        //returns a custom type descriptor based on a UserPropertyHostType enum value, and the default descriptor
        return new InfCustomTypeDescriptor(UserPropertyHostType.Building, defaultDescriptor);
    }
}

그래서 각각의 사용자 정의 TypeDescriptionProviders료(TypeDescriptionProvider 부모) 베이스 생성자 전달하여 기본 TypeDescriptionProvider 의 특정 유형입니다.

GetTypeDescriptor() 메소드 호출 base.GetTypeDescriptor() 기본 설명자는 다음을 사용하여 내 사용자 지정 형식을 설명하는 추가에 사용자 정의 속성입니다.

는 몇 가지 방법이 있으로 다음을 결합하여 하나의 일반 사용자 지정 TypeDescriptionProvider 는 것과 동일한 기능을 가지고 있지만,특정 유형에 연결?을 건너 뛸 수 있을 제공하는 부모로 TypeDescriptionProvider 생성자에서 그러나 나중에 설정에서 GetTypeDescriptor() 방법을 알고 있는 경우 구체적으로 어떤 유형의 객체가 쿼리되는?또는 다른 방법으로 얻기의 기본 설명자의 유형이 다른 그런 다음 전화 base.GetTypeDescriptor(t 형,체인) 방법?

올바른 솔루션이 없습니다

다른 팁

이 일반 수업은 원하는대로해야합니다.

class CustomTypeProvider<T> : TypeDescriptionProvider
{
    private static TypeDescriptionProvider defaultTypeProvider = TypeDescriptor.GetProvider(typeof(T));

    public CustomTypeProvider(): base(defaultTypeProvider)
    {

    }

    public override ICustomTypeDescriptor GetTypeDescriptor(Type objectType, object instance)
    {
        ICustomTypeDescriptor defaultDescriptor = base.GetTypeDescriptor(objectType, instance);

        //returns a custom type descriptor based on a UserPropertyHostType enum value, and the default descriptor
        return new InfCustomTypeDescriptor(UserPropertyHostType.SiteRegion, defaultDescriptor);
    }
}

내가 처리되는 과거에 이를 사용하여 일반적인 유형:

public class MyTypeDescriptionProvider<T> : TypeDescriptionProvider
{
  public MyTypeDescriptionProvider()
    : base(TypeDescriptor.GetProvider(typeof(T)))
  {
  }
}

나는 확신이 있다면 그것을 취급할 수 있었 마찬가지로서 일반적인 유형을 전달하여 유형을 생성자로 매개변수:

public class MyTypeDescriptionProvider : TypeDescriptionProvider
{
  public MyTypeDescriptionProvider(Type t)
    : base(TypeDescriptor.GetProvider(t))
  {
  }
}

이것은 아마도 바람직하는 경우에 당신을 사용할 필요가 없 유형에 공급자--테스트하지 않았습니다.

그런 다음 이를 사용할 때 공급자,수업은 등록의 라인을 따라:

TypeDescriptor.AddProvider(new MyTypeDescriptionProvider<ClassA>(), typeof(ClassA));
TypeDescriptor.AddProvider(new MyTypeDescriptionProvider<ClassB>(), typeof(ClassB));

etc.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top