Yazar |
|
pinar23
Kayıt: 29.02.2008 |
|
Merhaba arkadaşlar,
Acaba Visual studiu da Herhangi bir class (ComplexImage) non public members ulaşma şansımız varmı???
|
|
Yazar |
|
aliolci
en dipten taa derind
Kayıt: 19.01.2006 |
|
private int degisken;
public int degiskenProperty{get{return degisken;}set{degisken=value;}}
seklinde property tanımlayarak private degiskene ulaşabilirsin.
Cant you see the writing on the wall?
"die young gonna die young"
So! Live for today
Tomorrow never comes..
|
|
Yazar |
|
timur
İstanbul
Kayıt: 19.01.2006 |
|
Non public member lara reflection ile erişebiliyoruz. Type bilgilerini aldıktan sonra o type bilgisi ile Activator.CreateInstance diyerek bir adet instance ını yaratıp, yine type bilgilerinden o member ı alabiliriz. Örneğin şöyle bir class ımız olsun.
class Mathematics
{
private int Add(int value1, int value2)
{
return value1 + value2;
}
}
Buradaki Add methodunu reflection ile alıp, MethodInfo içindeki Invoke methodu ile çağırabiliriz...
Type t = typeof(Mathematics);
Mathematics m = Activator.CreateInstance(t) as Mathematics;
MethodInfo info = t.GetMethod("Add", BindingFlags.NonPublic|BindingFlags.Instance);
int value = (int)info.Invoke(m, new object[] { 1, 2 });
MessageBox.Show(value.ToString());
Burada GetMethod derken BindingFlag olarak NonPublic olduğunu ve bir instance ile çağrıldığını belirttik. Bu yolla istediğimiz tipteki her member ı alabiliriz.
GetMethod
GetMember
GetProperty
GetField
gibi methodları kullanarak.
İyi çalışmalar...
Hayat varsa umut vard?r...
www.timureroglu.com
|
|
Yazar |
|
pinar23
Kayıt: 29.02.2008 |
|
merhaba Timur,
Ben MethodInfo sınıfını tanıtamadım bir reference llibrary varmı??
|
|
Yazar |
|
pinar23
Kayıt: 29.02.2008 |
|
tammam buldum timur reflection altındaymış
|
|
Yazar |
|
neurorebel
Kayıt: 15.08.2007 |
|
neden non-public üyelere ulaşmak istiyorsunuz ?
Do weird and difficult things.
|
|
Yazar |
|
pinar23
Kayıt: 29.02.2008 |
|
şimdi asılında benim AForge.Math kütüphanesin içinde
ComplexImage diye bir sınıfım var ve bunun non public members içinde data kısmı var bir matris bu içinde frekans değereler yani complex sayılar var. ben bu değerleri herhangi bir dizinin içine atmak istiyorum. Umarın nedeni açıklayabildim. :)
|
|
Yazar |
|
pinar23
Kayıt: 29.02.2008 |
|
ComplexImage cImage = ComplexImage.FromBitmap(image);
cImage = Activator.CreateInstance(t) as ComplexImage;
System.Reflection.MethodInfo info = t.GetMethod("ComplexImage", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
Complex[,] data1 = info.Invoke(cImage,???)
yani soru kısmını anlayamadım. Oraya yine cImage içinde bulanan yani non public memeber gelemdi???
|
|
Yazar |
|
timur
İstanbul
Kayıt: 19.01.2006 |
|
pinar23 yazdi | şimdi asılında benim AForge.Math kütüphanesin içinde
ComplexImage diye bir sınıfım var ve bunun non public members içinde data kısmı var bir matris bu içinde frekans değereler yani complex sayılar var. ben bu değerleri herhangi bir dizinin içine atmak istiyorum. Umarın nedeni açıklayabildim. :)
|
Bayağı hayırlı bir iş içinmiş
Kusura bakma görmedim sorduğun soruyu, System.Reflection namespace i içinde. Gerçi bulmuşsun ama yine de cevap vereyim dedim
Kolay gelsin...
Hayat varsa umut vard?r...
www.timureroglu.com
|
|
Yazar |
|
timur
İstanbul
Kayıt: 19.01.2006 |
|
pinar23 yazdi | ComplexImage cImage = ComplexImage.FromBitmap(image);
cImage = Activator.CreateInstance(t) as ComplexImage;
System.Reflection.MethodInfo info = t.GetMethod("ComplexImage", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
Complex[,] data1 = info.Invoke(cImage,???)
yani soru kısmını anlayamadım. Oraya yine cImage içinde bulanan yani non public memeber gelemdi???
|
Complex[,] data1 = info.Invoke(cImage,???)
soru işareti kısmında senin çağırdığın ComplexImage metodunun parametreleri gelecek. Parametreleri de object türünden dizi şeklinde gönderiyorsun...
Hayat varsa umut vard?r...
www.timureroglu.com
|
|
Yazar |
|
timur
İstanbul
Kayıt: 19.01.2006 |
|
Yalnız data kısmı field olduğu için GetField ile almanız gerekiyor. Nesnenin instance ını yaratabildiğiniz için de Activator.CreateInstance ile yaratamanıza gerek yok. Sanırım istediğiniz şöyle birşey...
Bitmap bmp = Bitmap.FromFile(@"C:Users\timure\Desktop\access.bmp") as Bitmap;
ComplexImage image = ComplexImage.FromBitmap(bmp);
Type t = image.GetType();
FieldInfo info = t.GetField("data", BindingFlags.Instance | BindingFlags.NonPublic);
Complex[,] data = info.GetValue(image) as Complex[,];
İyi çalışmalar...
Hayat varsa umut vard?r...
www.timureroglu.com
|
|
Yazar |
|
pinar23
Kayıt: 29.02.2008 |
|
Evet Timur dediğin gibi GetField oldu çok teşekkür ederim.
Sende image processing falan ilgiliyormusun???
|
|
Yazar |
|
timur
İstanbul
Kayıt: 19.01.2006 |
|
pinar23 yazdi | Evet Timur dediğin gibi GetField oldu çok teşekkür ederim.
Sende image processing falan ilgiliyormusun??? |
Önemli değil.
Hayır ilgilenmiyorum, sen sorunca merak ettim söylediğin sınıfa, dll i buldum ve baktım neymiş diye
Hayat varsa umut vard?r...
www.timureroglu.com
|
|
|
|
-
Del.icio.us
-
Digg
-
Facebook
-
Furl
-
Google
-
Blink
-
Simpy
-
Spurl
-
Y! MyWeb
|
|
| | | | | | | | | |