Trong dự án của tôi, tôi có ba giao diện sau, được triển khai bởi các lớp quản lý việc hợp nhất một loạt các đối tượng nghiệp vụ có cấu trúc khác nhau.Tôi có thể có một số biến số tham số chung không?
public interface IMerger<TSource, TDestination>
{
TDestination Merge(TSource source, TDestination destination);
}
public interface ITwoWayMerger<TSource1, TSource2, TDestination>
{
TDestination Merge(TSource1 source1, TSource2 source2, TDestination destination);
}
public interface IThreeWayMerger<TSource1, TSource2, TSource3, TDestination>
{
TDestination Merge(TSource1 source1, TSource2 source2, TSource3 source3, TDestination destination);
}
này hoạt động tốt, nhưng tôi thà có một IMerger
giao diện mà quy định cụ thể một số biến của TSource
thông số, một cái gì đó như thế này (ví dụ dưới đây sử dụng params
, tôi biết đây không phải là hợp lệ C#):
public interface IMerger<params TSources, TDestination>
{
TDestination Merge(params TSource sources, TDestination destination);
}
Có cách nào để đạt được điều này, hoặc một cái gì đó có chức năng tương đương?
Bạn không thể tạo một giao diện với một số biến của tham số, nhưng bạn có thể cung cấp cho các cùng tên cho tất cả các biến thể của bạn (giống như đại biểu 'Func') –
Trong khi đó chỉ là một mã giả không hợp lệ, nó có ý nghĩa hơn khi viết giống như' giao diện công cộng IMerger { TDestination Merge '(TDestination) đích, params nguồn TSource); } '. 'params' sẽ đến cuối cùng. Nhưng như Christian Hayter nói, có một lớp cơ sở là giải pháp duy nhất –
nawfal