我有以下类:
public interface IService
{
void ApplyChanges<T>(T parameters) where T : ParamBase;
}
public class ServiceBase : IService
{
public virtual void ApplyChanges<T>(T parameters) where T : ParamBase
{ }
}
public abstract class Service : ServiceBase
{
public override void ApplyChanges<T>(T parameters) where T : ParamBase
{
Console.WriteLine(parameters.Param2);
//Apply changes logic here...
}
}
public abstract class ParamBase
{
public string Param1 { get; set; }
}
public class ParamA : ParamBase
{
public string Param2 { get; set; }
}
这是我的测试主类:
void Main()
{
var service = new Service();
var paramA = new ParamA();
paramA.Param2 = "Test2";
service.ApplyChanges<ParamA>(paramA);
}
这个实现有什么问题?我如何在我的Service类中重写的ApplyChanges方法中访问parameters.Param2?
总的来说,我有一个ServiceBase,我希望它的派生类能够将不同的参数类型传递给ApplyChanges方法。
Param2
不是ParamBase
的一部分,因此泛型T:where ParamBase
对于Param2
一无所知。 - freedomn-mServiceBase
类,并且我希望它的派生类可以将不同的参数类型传递给ApplyChanges
方法。 - Adolfo Perez