2017-02-03 18 views
0
public class ThemeProperty 
    { 
     public Color FColor { get; set; } = Color.White; 
     public Color BColor { get; set; } = Color.Black; 
    } 

    [TypeConverter(typeof(ExpandableObjectConverter))] 
    public ThemeProperty Theme { get; set; } = new ThemeProperty(); 

    // Use. 
    public void Test() 
    { 
     Theme.BColor = Color.Gray; 
     Theme.FColor = Color.Black; 
     Theme = true; /*I wanted to make the feature active or passive, but 
     I could not figure out how to define a property class for this line.*/ 
    } 

안녕하세요, 테마라는 확장 가능한 속성을 만들었습니다. 나는 두 가지 특징을 가지고 있지만, 내가 능동적이거나 수동적 인 경우에 그것을 사용하고 싶습니다. 그리고 제가 활동적이라면 그것들을 사용하고 싶습니다. 이 기능을 만들고 제어 할 수는 있지만 유연하지는 않습니다. 위와 같이이 기능을 정의하고 싶지만 어떻게해야하는지 알 수 없습니다. 당신의 도움을 주셔서 대단히 감사합니다.C# 확장 가능 속성

enter image description here

나는 빨간 선에 참 거짓 값을 추가하고 싶습니다. 기능 활성화 또는 비활성화.

답변

0

당신은 이런 식으로 뭔가를해야만 시도 할 수 있습니다 :

public class ThemeProperty 
{ 
    public Color FColor { get; set; } 
    public Color BColor { get; set; } 
    public bool ActivePassive { get; set; } 

    public void ThemeProperty(bool state) 
    { 
     ActivePassive = state; 
     FColor = Color.White; 
     BColor = Color.Black; 
    } 
} 

을하고 만들기 위해 생성자를 사용하는 것은 참/거짓을 통해 수동 활성화됩니다. 희망이 도움이됩니다.

+0

나는 이런 식으로 아직 유연하지 못했다고 설명하려고 노력했다. 답장을 보내 주셔서 감사합니다. 질문을 정리하겠습니다. – Emre

0

"ThemeProperty"클래스에 속성을 하나 더 정의하십시오.

public class ThemeProperty 
{   
    public Color FColor { get; set; } = Color.White; 
    public Color BColor { get; set; } = Color.Black; 
    public bool Active { get; set; } = true; 
} 

// Use. 
[TypeConverter(typeof(ExpandableObjectConverter))] 
public ThemeProperty Theme { get; set; } = new ThemeProperty(); 


public void Test() 
{ 
    Theme.BColor = Color.Gray; 
    Theme.FColor = Color.Black; 
    Theme.Active = true; 
} 

"Active"가 필요한 경우 active의 부울을 클래스 생성자에 전달할 수 있습니다. 또한 관측으로 "Property"클래스를 호출하는 것은 좋지 않을 수 있습니다. 인스턴스화 할 수있는 클래스는 속성의 Type으로 사용할 수 있습니다. 다음은 초기 버전의 대안입니다.

public class Theme 
{   
    public Theme(bool active) 
    { 
     Active = active; 
    } 

    public Color FColor { get; set; } = Color.White; 
    public Color BColor { get; set; } = Color.Black; 
    public bool Active { get; set; } 
} 

// Use. 
[TypeConverter(typeof(ExpandableObjectConverter))] 
public Theme theme { get; set; } 


public void Test() 
{ 
    theme = new Theme(true) { BColor = Color.Gray, FColor = Color.Black }; 
} 
+0

나는 이런 식으로 아직 유연하지 못했다고 설명하려고 노력했다. 답장을 보내 주셔서 감사합니다. 질문을 정리하겠습니다. – Emre