Çalışma zamanında derlenmiş ve yüklenmiş özel bir tür dönüştürücüye sahip basit bir türüm var. TypeDescriptor.GetConverter() doğru dönüştürücüyü bulamıyor. İşte tek başına bir örnek BuradaTypeDescriptor.GetConverter() dönüştürücümü geri getirmiyor
using System;
using System.ComponentModel;
using System.Collections.Generic;
using System.CodeDom.Compiler;
using Microsoft.CSharp;
public class Program
{
private static string src =
@"
using System;
using System.ComponentModel;
namespace LoadMe
{
[TypeConverter(typeof(FooConverter))]
public class Foo
{
}
public class FooConverter : TypeConverter
{
// stuff
}
}
";
public static void Main()
{
var codeProvider = new CSharpCodeProvider(new Dictionary<string, string>{{ "CompilerVersion", "v4.0" }});
var compileParameters = new CompilerParameters(new[] { "System.dll" }) { GenerateInMemory = true };
var compilerResults = codeProvider.CompileAssemblyFromSource(compileParameters, src);
if (compilerResults.Errors.Count == 0)
{
var fooType = compilerResults.CompiledAssembly.GetType("LoadMe.Foo");
Console.WriteLine(fooType.FullName + "::" + fooType.Assembly.FullName);
Console.WriteLine("Type converter type = '" + TypeDescriptor.GetConverter(fooType).GetType().FullName + "'");
}
else
{
foreach (var err in compilerResults.Errors)
Console.WriteLine(err);
}
}
}
LoadMe.Foo::q5sszdls, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
Type converter type = 'System.ComponentModel.TypeConverter'
Sadece niteliğini kazmak ve örneği oluşturmak kendim ya ben eksik Should (VS derlenmiş) örnek çıktısı olduğu Burada başka bir şey var mı?
AYRICA tek! LINQPad 'C# programı olarak çalıştırıldığında aslında işe yarıyor! İşte çıktı. LINQPad ready source
LoadMe.Foo::oqmid5in, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
Type converter type = 'LoadMe.FooConverter'
LINQPad aslında farklı olarak yaptıkları hakkında bir fikrin doğru dönüştürücü bulmak zorunda?
böyle çalışmak gerekiyordu ve [hızlı bir online testi] (http://ideone.com/16utE6) öyle olduğunu gösterdiğinden. Tanımladığınız davranışı gösteren minimal bir tam program yayınlayabilir misiniz? – hvd
hmm, türler çalışma zamanında derlenmiştir, bu nedenle nedeni olmalıdır. İzole bir örnek çırpacak –
Sadece bir bağımsız örnek olarak düzenledim, bir düzenleme yorumunu unuttum: O –