Pregunta

De acuerdo, este es el caso:

Tengo una clase base genérica que se tiene que inicializar con algunos valores estáticos. Estos valores no tienen nada que ver con el tipo de tipos de mi clase base genérica se carga con.

Quiero ser capaz de hacer algo como esto:

GenericBaseclass.Initialize(AssociatedObject);

al mismo tiempo tener una clase haciendo de esta manera:

public class DerivedClass : GenericBaseclass<int>
{
   ...
}

¿Hay alguna manera de lograr esto? Yo podría hacer una clase base no genérico y poner el método estático allí, pero no me gusta que "hackear":)

¿Fue útil?

Solución

Si los valores no tienen nada que ver con el tipo de la clase base genérica, entonces no deberían estar en la clase base genérica. Deben ser ya sea en una clase completamente separada, o en una clase base no genérico de la clase genérica.

Tenga en cuenta que para las variables estáticas, se obtiene una variable estática diferente según el tipo de combinación argumento:

using System;

public class GenericType<TFirst, TSecond>
{
    // Never use a public mutable field normally, of course.
    public static string Foo;
}

public class Test
{    
    static void Main()
    {
        // Assign to different combination
        GenericType<string,int>.Foo = "string,int";
        GenericType<int,Guid>.Foo = "int,Guid";
        GenericType<int,int>.Foo = "int,int";
        GenericType<string,string>.Foo = "string,string";


        // Verify that they really are different variables
        Console.WriteLine(GenericType<string,int>.Foo);
        Console.WriteLine(GenericType<int,Guid>.Foo);
        Console.WriteLine(GenericType<int,int>.Foo);
        Console.WriteLine(GenericType<string,string>.Foo);

    }
}

Parece que usted no lo hace realmente que desee una variable estática diferente por T de su clase base genérica - por lo que no se puede tener en su clase base genérica .

Otros consejos

Eso es exactamente lo que tiene que hacer. Cuando se tiene un parámetro de tipo, cada instancia diferente de la clase es un separada tipo. Esto conduce a separar las variables estáticas.

La única solución es tener una clase base que la clase genérica deriva de.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top