可以說我有一個這樣的類:如何建立正確的初始化InstanceDescriptor初始化一些屬性
public class Foo
{
public Foo {}
public int Titi { get; set; }
public int Toto { get; set; }
public int Tata { get; set; }
}
我可以初始化一個新的實例是這樣的:
var inst = new Foo { Titi = 12, Toto = 42, Tata = 421 };
但我怎麼能建立正確的實例描述符,執行與上面相同的初始化?
public class FooConverter : TypeConverter
{
// ...
public override object ConvertTo(ITypeDescriptorContext context,
CultureInfo culture,
object value,
Type destinationType)
{
if (destinationType == typeof(InstanceDescriptor) && value is Foo)
{
// Incorrect example because properties wont
// be initialized to 12, 42 and 421
var ctor = typeof(Foo).GetConstructor(Type.EmptyTypes);
return new InstanceDescriptor(ctor, null);
}
// ...
}
}
NB1:我問這個,因爲我想創建一個「富」類的TypeConverter,並需要提供皈依到「初始化InstanceDescriptor」
NB2:是的,我可以添加構造來富這個類需要3個參數,但是想要避免這個,並且想知道哪個「構造描述」對應於上面的示例。
是的,我看到我也可以使用MemberInfo,PropertyInfo ...嘗試類似這樣的事情,即使不太熟悉它也會讓你知道 – CitizenInsane
在使用'Foo'類時,Visual Studio設計器仍然崩潰實施FooConverter並沒有問題。這樣做了嗎?public static Foo ConvertToInstance(Foo inst) return inst.Clone();如果(destinationType == typeof(InstanceDescriptor)&& value爲Foo) }'和'if(destinationType == typeof(InstanceDescriptor)&& value is Foo) var m = typeof(FooConverter).GetMethod(「ConvertToInstance」,BindingFlags.Static | BindingFlags.Public); return new InstanceDescriptor(m,new object [] {value}); }' – CitizenInsane