long?
türünde bir int
ile doldurulmuş bir özelliğimiz var.Yansıma özelliğini belirlerken türü dönüştürme sorunu
ben sadece doğrudan obj.Value = v;
özelliğini ayarlayın ama denemek ve yansıma info.SetValue(obj, v, null);
yoluyla özelliğini ayarlayın zaman bana şu istisna verdiğinde Bu çalışıyor: Çeşidi
Object 'System.ınt32' olamaz 'System.Nullable`1 [System.Int64]' türüne dönüştürülür.
Bu basitleştirilmiş senaryo: doğrudan özelliği ayarlanırken çalıştığını ederken reflection
yoluyla mülk ayarlarken
class TestClass
{
public long? Value { get; set; }
}
[TestMethod]
public void TestMethod2()
{
TestClass obj = new TestClass();
Type t = obj.GetType();
PropertyInfo info = t.GetProperty("Value");
int v = 1;
// This works
obj.Value = v;
// This does not work
info.SetValue(obj, v, null);
}
Neden çalışmıyor?
Mükemmel cevap! – series0ne
Gecikme için özür dilerim, kod örnekleri ile uğraşmaktaydı. Bu hile yaptı, teşekkürler! – Shikyo
'Boş' ayarlandığında çalışmaz. Düzeltmek kolaydır, postanızı düzenlemeyi denedi ancak reddedildi. – Shikyo