Jeg regner med, at du mener properties i stedet for attributter.
Nedarve fra en generisk klasse:
public class ExtendedClass<T> : BaseClass<T> {
}
Eller:
public class ExtendedStringClass : BaseClass<string> {
}
Hej bvli og mange tak for din kommentar!
Jeg tror ikke at jeg har formuleret mig rigtigt, beklager. Her kommer et lille eksempel:
public class Vare
{
public int VareId { get; set; }
public string VareTekst { get; set; }
}
public class Kunde
{
public int KundeId { get; set; }
public string Note { get; set; }
}
nu vil jeg gerne lave en klasse som kan nedarve for begge ovenstående klasser og evt. flere.
public class ExtendedClass<T> : ???{
}
Håber at det give mening :-)
C# tillader ikke at en klasse arver fra flere klasser.
Og naeppe heller i denne variant.
Enten skal din Vare og Kunde klasse arve fra en faelles klasse med den faelles funktionalitet.
Eller saa skal du til at rode med noget AOP/dynamisk proxy.
Træls...
Mange tak for kommentarene arne_v, smid et svar så er der point!
Her er et super skummelt eksempel med Castle DynamicProxy.
using System;
using System.Reflection;
using Castle.Core;
using Castle.Core.Interceptor;
using Castle.DynamicProxy;
namespace E
{
// this is what we have
public class C1
{
public void M1()
{
Console.WriteLine("C1 M1");
}
}
public class C2
{
public void M2()
{
Console.WriteLine("C1 M1");
}
}
// this is what we need to have to extend both C1 and C2
public class CX
{
public void MX()
{
Console.WriteLine("CX MX");
}
}
// helper stuff
public interface I1
{
void M1();
}
public interface I2
{
void M2();
}
public interface IX
{
void MX();
}
public interface IA : IX,I1,I2
{
}
public class C1D : C1, I1
{
}
public class C2D : C2, I2
{
}
public class CXD : CX, IX
{
}
public static class ProxyHelper
{
public static TA CreateWrapper<TXC,T1C,T2C,TA>(this ProxyGenerator gen) where T1C : new() where T2C : new()
{
ProxyGenerationOptions opt = new ProxyGenerationOptions();
opt.AddMixinInstance(new T1C());
opt.AddMixinInstance(new T2C());
return (TA)gen.CreateClassProxy(typeof(TXC), new Type[] { typeof(TA) }, opt);
}
}
// demo
public class Program
{
public static void Main(string[] args)
{
ProxyGenerator gen = new ProxyGenerator();
IA o = gen.CreateWrapper<CXD,C1D,C2D,IA>();
o.M1();
o.M2();
o.MX();
Console.ReadKey();
}
}
}