2012-06-01 3 views
3

형식 매개 변수에 매개 변수가 개체 인스턴스의 형식임을 지정하는 방법이 있습니까? 예를 들어파생 클래스에 대한 일반 매개 변수의 "this"유형

, 설명하기, 내가 가진 :

내 예를 들어
public abstract class Model 
{ 
    public int Prop1 { get; set; } 
} 

, 내가 전달 된 Model의 속성을 반환하는 방법을 갖고 싶어 (분명이 바보 같은 방법이지만, 포인트를 가로 지른다). 내가

public class DerivedModel : Model 
{ 
    public string Prop2 { get; set; } 
} 

을 가질 수

public static class Extensions 
{ 
    public static U Property<T, U>(this T model, Expression<Func<T, U>> property) where T : Model 
    { 
     return property.Compile().Invoke(model); 
    } 
} 

이 방법과는 Model 클래스의 일부가되어야처럼이 방법은 같다

var myString = new DerivedModel().Property(a => a.Prop2); 

할 : 나는 그것을 확장 방법으로 작동 할 수 있습니다 다음과 같이 보입니다.

public T Property<T>(Expression<Func<ThisDerivedInstanceOfModel, T>> property) 
{ 
    return property.Compile().Invoke(this); 
} 

이므로 Property()에 대한 동일한 호출이 확장 메서드가 Model의 인스턴스에서 실행할 수 있습니다.

이것은 기괴한 일이며 C#의 기능이 아니며 workaround 확장 메서드가 완벽하게 작동한다는 것을 알았지 만 가능하다면이 메서드를 가능한 한 인스턴스 메서드로 만드는 것을 선호합니다. ' 나에게.

답변

3

유형 매개 변수에 매개 변수가 객체 인스턴스의 유형임을 지정하는 방법이 있습니까?

아니요. 죄송합니다. 유용하다고 생각할 때가 있지만, 할 수있는 일이 아닙니다. 나는 과거에 비슷한 이슈를 가지고 있었다. (

+1

어쨌든이 질문에 대한 첫 번째 대답은 Jon Skeet이 "아니오"라고 말했을 것이다. 고마워! – eouw0o83hf

관련 문제