我想动态创建一个包装类,这样对于每个所需的类(可能在DBO之类的某个命名空间下面),我会得到一个合适的类:
public class [ClassName]Wrapper{
public [ClassName] [ClassName] { get; set; }
}
其次,我需要基于包装器与原始类型。我假设我可以做类似的事情:
(classBob as Type).ToString().EndsWith("Wrapper")
如果我需要更多,请帮助我:)。
我对反射很新,我从未在运行时构建过类。执行此操作的代码会很棒,但即使指出了很好的资源来研究用于执行此操作的工具,对我来说也是一个很好的进展。
谢谢!
答案 0 :(得分:2)
不会使用泛型来解决你的问题吗?
public class Wrapper<T>
where T : class
{
public Wrapper(T wrappee)
{
Class = wrappee;
}
public T Class { get; } // C# 6.0 Syntax, otherwise add "private set;"
}
然后,您可以使用
在运行时创建包装器Type typeToBeWrapped = objToBeWrapped.GetType();
Type genericWrapper = typeof(Wrapper<>);
Type constructedWrapper = genericWrapper.MakeGenericType(typeToBeWrapped);
object obj = Activator.CreateInstance(constructedWrapper, objToBeWrapped);