here과 비슷한 유형의 세이프 메소드와 비슷한 방식으로 내 ViewModelBaseClass에 사용자 정의 Get/SetValue (INotifyPropertyChanged) 도우미 함수를 추가하기로 결정했습니다. 하지만 기본 초기화가있는 도우미 함수에 선택적 이니셜 라이저를 추가하려고합니다. 불행히도 default 키워드는 참조 유형을 null, null 값 유형을 null로, 값 유형을 기본값으로 초기화합니다.게이터 도우미에 대한 기본 이니셜 라이저 오버로드를 허용하는 방법
형식에 대한 기본값을 반환하는 Get 도우미, Nullable (가능한 경우)에 대한 BaseType의 기본값 값 및 기본 생성자가있는 참조 형식의 기본 생성자에서 호출하는 제네릭 함수를 만들고 싶습니다. 생성자를 구현하지 않는 참조 유형의 경우 null을 반환 할 수 있습니다. 그러나 새로운 T()와 디폴트 (T)를 호출하는 방법을 찾는 것이 어렵다면, 컴파일러는 올바른 제약 조건이 없다고 말합니다 (물론 제약 조건은 런타임에 검사되기 때문에). 내가 존 소총의 http://msmvps.com/blogs/jon_skeet/archive/2010/11/02/evil-code-overload-resolution-workaround.aspx 그는 말했다 ( 있는 가져 오기 도우미 메서드에 사용할 수있는 가정 대안으로
:.
이것은 아마도 내가 쓴 가장 끔찍한 코드를
실제 생활에서 사용하지 마십시오 제발, 제발. 그런 이나 뭐 다른 방법 이름을 사용합니다. 을 아직도, 그것은, 그것은 재미있는 작은 퍼즐 그렇지?
)을 사용하면 기본 생성자없이 참조 형식을 강제로 지정하여 비 선택적 init Func를 지정할 수 있습니다.