gpt4 book ai didi

c# - 扩展方法 - 如何在继承中返回正确的类型?

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

我正在尝试从我的存储库类创建通用方法。这个想法是一种方法,该方法执行某些操作并返回调用它的类的实例。

public class BaseRepository { }

public class FooRepository : BaseRepository { }

public class BarRepository : BaseRepository { }

public static class ExtensionRepository
{
public static BaseRepository AddParameter(this BaseRepository self, string parameterValue)
{
//...
return self;
}
}

// Calling the test:
FooRepository fooRepository = new FooRepository();
BaseRepository fooWrongInstance = fooRepository.AddParameter("foo");

BarRepository barRepository = new BarRepository();
BaseRepository barWrongInstance = barRepository.AddParameter("bar");

好吧,这样我可以获得 BaseRepository 实例。但是我需要获取调用此方法的 FooRepository 和 BarRepository 实例。任何想法?非常感谢!!!

最佳答案

你可以尝试使用泛型

public static class ExtensionRepository
{
public static T AddParameter<T>(this T self, string parameterValue) where T:BaseRepository
{
//...
return self;
}
}

关于c# - 扩展方法 - 如何在继承中返回正确的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15951950/

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