gpt4 book ai didi

c# - "This"为派生类输入泛型参数

转载 作者:行者123 更新时间:2023-11-30 15:39:01 25 4
gpt4 key购买 nike

有没有办法在类型参数中指定一个参数是对象实例的类型?

例如,为了说明,我有:

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# 的一个特性,并且变通方法扩展方法非常有效——但如果可能的话,我更愿意将其作为实例方法,因为看起来“更好”对我来说。

最佳答案

Is there a way to specify in type parameters that a parameter is the type of the object instance?

没有。对不起。有时我可以看到它很有用,但这不是您可以做的事情。我过去也遇到过类似的问题:(

关于c# - "This"为派生类输入泛型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10853229/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com