Click here to Skip to main content
15,895,462 members
Home / Discussions / C#
   

C#

 
GeneralRe: Simplify usage of a complex generic class for convenience Pin
Richard Deeming5-Apr-19 5:34
mveRichard Deeming5-Apr-19 5:34 
GeneralRe: Simplify usage of a complex generic class for convenience Pin
BillWoodruff5-Apr-19 16:37
professionalBillWoodruff5-Apr-19 16:37 
GeneralRe: Simplify usage of a complex generic class for convenience Pin
Richard Deeming15-Apr-19 8:15
mveRichard Deeming15-Apr-19 8:15 
GeneralRe: Simplify usage of a complex generic class for convenience Pin
BillWoodruff15-Apr-19 19:06
professionalBillWoodruff15-Apr-19 19:06 
GeneralRe: Simplify usage of a complex generic class for convenience Pin
Richard Deeming16-Apr-19 7:32
mveRichard Deeming16-Apr-19 7:32 
AnswerRe: Simplify usage of a complex generic class for convenience Pin
BillWoodruff5-Apr-19 20:12
professionalBillWoodruff5-Apr-19 20:12 
GeneralRe: Simplify usage of a complex generic class for convenience Pin
Gerry Schmitz6-Apr-19 11:03
mveGerry Schmitz6-Apr-19 11:03 
GeneralRe: Simplify usage of a complex generic class for convenience Pin
BillWoodruff6-Apr-19 11:20
professionalBillWoodruff6-Apr-19 11:20 
Gerry Schmitz wrote:
One knows how many parameters are passed based the count
Not in this case; the indexing in the call to 'base is executed immediately during instantiation.

You could do it this way:
public class MyClass<T1, T2, T3, T4>
{
    public T1 Value1 { get; set; }
    public T2 Value2 { get; set; }
    public T3 Value3 { get; set; }
    public T4 Value4 { get; set; }

    public MyClass(T1 value1, T2 value2, T3 value3, T4 value4)
    {
        Value1 = value1;
        Value2 = value2;
        Value3 = value3;
        Value4 = value4;
    }

    protected MyClass()
    {
    }
}

public class MyClass<T1> : MyClass<T1, T1, T1, T1>
{
    public MyClass(params T1[] values)
    {
        if(values.Length != 4) throw new ArgumentException("requires 4 parameters");

        Value1 = values[0];
        Value2 = values[1];
        Value3 = values[2];
        Value4 = values[3];
    }
}
But, look what happens: the Value properties in the base class now require a setter, and thw base class requirea a parameterless ctor.

imho, all of these implementations are hacks, and writing straightforward individual methods for each group of Types is better practice.

To me the attempt here to make these generic methods more "generalized" just leads to semantic confusion. It's not that much work to write a bunch of specific methods that can provide strict control over parameter validation, and can be unit tested efficiently.
«Where is the Life we have lost in living? Where is the wisdom we have lost in knowledge? Where is the knowledge we have lost in information?» T. S. Elliot


modified 6-Apr-19 18:55pm.

GeneralRe: Simplify usage of a complex generic class for convenience Pin
BillWoodruff6-Apr-19 15:44
professionalBillWoodruff6-Apr-19 15:44 
AnswerRe: Simplify usage of a complex generic class for convenience Pin
BillWoodruff6-Apr-19 12:57
professionalBillWoodruff6-Apr-19 12:57 
QuestionWhere are the libraries located in C#? Pin
Brian_TheLion3-Apr-19 20:15
Brian_TheLion3-Apr-19 20:15 
AnswerRe: Where are the libraries located in C#? Pin
OriginalGriff3-Apr-19 21:34
mveOriginalGriff3-Apr-19 21:34 
GeneralRe: Where are the libraries located in C#? Pin
Brian_TheLion3-Apr-19 23:20
Brian_TheLion3-Apr-19 23:20 
GeneralRe: Where are the libraries located in C#? Pin
OriginalGriff3-Apr-19 23:28
mveOriginalGriff3-Apr-19 23:28 
GeneralRe: Where are the libraries located in C#? Pin
Brian_TheLion4-Apr-19 0:06
Brian_TheLion4-Apr-19 0:06 
GeneralRe: Where are the libraries located in C#? Pin
OriginalGriff3-Apr-19 23:31
mveOriginalGriff3-Apr-19 23:31 
GeneralRe: Where are the libraries located in C#? Pin
Brian_TheLion3-Apr-19 23:58
Brian_TheLion3-Apr-19 23:58 
GeneralRe: Where are the libraries located in C#? Pin
Brian_TheLion4-Apr-19 0:02
Brian_TheLion4-Apr-19 0:02 
GeneralRe: Where are the libraries located in C#? Pin
CHill604-Apr-19 0:38
mveCHill604-Apr-19 0:38 
GeneralRe: Where are the libraries located in C#? Pin
OriginalGriff4-Apr-19 0:46
mveOriginalGriff4-Apr-19 0:46 
GeneralRe: Where are the libraries located in C#? Pin
CHill604-Apr-19 1:20
mveCHill604-Apr-19 1:20 
GeneralRe: Where are the libraries located in C#? Pin
Brian_TheLion4-Apr-19 1:19
Brian_TheLion4-Apr-19 1:19 
GeneralRe: Where are the libraries located in C#? Pin
OriginalGriff4-Apr-19 1:30
mveOriginalGriff4-Apr-19 1:30 
GeneralRe: Where are the libraries located in C#? Pin
Brian_TheLion4-Apr-19 0:57
Brian_TheLion4-Apr-19 0:57 
AnswerRe: Where are the libraries located in C#? Pin
Eddy Vluggen3-Apr-19 21:42
professionalEddy Vluggen3-Apr-19 21:42 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.