C# 속성이 여러 값을 허용 할 수 있습니까?
-
09-09-2019 - |
문제
이것은 약간의 패턴 일 수 있지만 C# 클래스의 속성이 여러 값을 수락 할 수 있습니까?
예를 들어, 공개 INT 속성이 있고 항상 int를 반환하기를 원하지만 소수점, 정수 또는 기타 데이터 유형을 할당하여 속성을 설정할 수 있기를 원합니다. 그래서 내 질문은 속성이 여러 값을 수락 할 수 있는지 여부입니다.
해결책
나는 당신이 묻는 것이 무엇을 의미한다고 생각합니다. 어떻게 절대적인 그리고 명백한 캐스팅 작업 int
그리고 decimal
?
하나의 객체를 다른 정의 된 유형으로 자동 커버하는 암시 적 주조에 대해 묻습니다. 당신은 이것을 위해 이것을 할 수 없습니다 int
그리고 decimal
그것들은 이미 프레임 워크에 정의되어 있고 당신은 decimal
그것을 캐스팅하여 int
. 그러나 당신이 그것을 만든 실제 객체의 예로 사용한다면 당신은 절대적인 위의 링크, 이것이 어떻게 작동하는지와 구현 방법에 대해 자세히 알아보십시오.
그러나 항상 변환 메소드를 사용하여 올바른 유형으로 변환 할 수 있습니다.
public int MyProperty { get; set; }
...
obj.MyProperty = Convert.ToInt32(32.0M);
obj.MyProperty = Convert.ToInt32(40.222D);
obj.MyProperty = Convert.ToInt32("42");
다른 팁
편집하다: OP가 특징에 구체적으로 바인딩 되므로이 방법은 사용할 수 없습니다.
나는 이것이 당신이 묘사하는 견고성으로 가능하다고 믿지 않습니다. 이 경우 당신은 과부하 된 방법 (다형성).
이것은 일반적으로 a로 알려진 것입니다 세터 (또는 Mutator) 및 여러 다른 유형의 매개 변수를 수용하기 위해 방법을 과부하 할 수 있습니다. 원하는 경우 각각 다르게 수행됩니다. 내가 설정 한 방식은 구문 적으로 정확하지 않을 수 있지만 이것이 당신이 찾고있는 일반적인 아이디어입니다.
public class MyClass {
private Int32 mySomeValue;
public void setSomeValue(Double value) { this.mySomeValue = Convert.ToInt32(value); }
public void setSomeValue(Int32 value) { this.mySomeValue = value; }
}
런타임에 유형을 확인해야 할 것 같습니다. 속성이 객체를 수락하고 유형을 결정하고 행동을 취할 수 있습니다. 물론 당신이 기대하지 않는 것들에 대해 예외를 제외해야 할 것입니다. 당신이 말했듯이, 아마도 최고는 아니지만 가능합니다. :)
아니요. 속성은 단일 값을 가지고 있습니다. 동일한 유형의 변수에 할당 할 수있는 모든 것을 할당 할 수 있습니다.
속성은 일종의 공공 분야처럼 보일 것입니다. 세터 방법을 만들거나 속성 세터와 반대되는 과제 진술서에서 캐스트/변환을 수행하십시오.