だから私はいくつかの実験を行っていましたが、これが次のことを発見しました:
public class SelfOfT
{
// This won't compile
public class FailureOf<T> : T
{
}
}
一方、これは失敗します:
public class SelfOfT
{
public interface IMyInterface
{
}
public static void Second()
{
// This works fine, and achieves the same end as what I'm trying to do with FailureOf<T>
AssemblyName name = new AssemblyName("Dynamics");
AssemblyBuilder asmBuilder = AssemblyBuilder.DefineDynamicAssembly(name, AssemblyBuilderAccess.Run);
ModuleBuilder modbuilder = asmBuilder.DefineDynamicModule("MyModule");
TypeBuilder typeBuild = modbuilder.DefineType("SuccessfulOf", TypeAttributes.Public);
typeBuild.AddInterfaceImplementation(typeof(IMyInterface));
var TParam = typeBuild.DefineGenericParameters(new String[] { "T" }).First();
TParam.SetGenericParameterAttributes(GenericParameterAttributes.None);
Type myType = typeBuild.CreateType();
Type genericMyType = myType.MakeGenericType(typeof(IMyInterface));
IMyInterface my = (IMyInterface)Activator.CreateInstance(genericMyType);
}
}
正常に動作します。とにかく実行時にこれを行うことができれば、コンパイル時にこれを利用できるようにするだけで多くの問題を解決できるようです。