3
有沒有方法可以在類型參數中指定參數是對象實例的類型?「此」類型的派生類的通用參數
比如,爲了說明問題,我有:
public abstract class Model
{
public int Prop1 { get; set; }
}
對於我的例子,我想有一個將返回Model
傳入的屬性的方法(顯然這是一個愚蠢的方法,但它得到了點)。我可以把它作爲一個擴展方法工作:
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);
}
}
這樣我可以有
public class DerivedModel : Model
{
public string Prop2 { get; set; }
}
,做
var myString = new DerivedModel().Property(a => a.Prop2);
這種方法似乎應該是Model
類的一部分,看起來像這樣:
public T Property<T>(Expression<Func<ThisDerivedInstanceOfModel, T>> property)
{
return property.Compile().Invoke(this);
}
,以便與Property()
相同的調用擴展方法可以在Model
的實例上執行。我知道這是一種奇怪的,可能根本不是C#的一個特性,並且解決方法的擴展方法工作得非常好 - 但是我更願意在可能的情況下將它作爲實例方法,因爲看起來'更好' 對我來說。
不知何故,我知道這個問題的第一個答案是喬恩Skeet說「不」。謝謝! – eouw0o83hf