Рассмотрим следующий пример:
interface IPropertyCollection
{
public MethodWrapper GetPropertySetterByName(string name);
//<<-- I want the implementation from A and B merged into here somehow
}
class A : IPropertyCollection
{
static PropertyMap properties = new PropertyMap(typeof(A));
public MethodWrapper GetPropertySetterByName(string name)
{
return properties.SomeFunc(name);
}
}
class B : IPropertyCollection
{
static PropertyMap properties = new PropertyMap(typeof(B));
public MethodWrapper GetPropertySetterByName(string name)
{
return properties.SomeFunc(name);
}
}
Я хочу, чтобы в каждом классе был статический член, отслеживающий только вещи в этом классе, и я хочу, чтобы он вел себя одинаково для каждого класса, но с разным содержанием. Каждый статический член должен отслеживать только один отдельный класс. Я хочу иметь возможность получить доступ к статическому члену классов, просто имея экземпляр любого IPropertyCollection.
Примерно так:
IPropertyCollection a = new A();
IPropertyCollection b = new B();
a.GetPropertySetterByName("asdfsj"); //Should end up in static A.properties
b.GetPropertySetterByName("asdfsj"); //Should end up in static B.properties
Теперь это будет работать с моим примером кода, но я не хочу повторять все эти строки внутри A и B и 50 других классов.