עזרה בתחביר C#
-
יש לי שורת קוד כזו:
var user = (UserDefinition)Authorization.UserDefinition;
ואז אני יכול להשתמש בערך:
user.ClientId
הבעיה שאני רוצה להשתמש בזה בשורה אחת, ללא משתנה.
וזה:(UserDefinition)Authorization.UserDefinition.Id
לא עובד.
כנראה בגלל שה (UserDefinition) חל על ה Id, וצריך שיחול על ה UserDefinition שלפניו.איך כותבים את זה?
חשבתי:
((UserDefinition)Authorization.UserDefinition).Id
אבל זה גם מחזיר שגיאה.
-
@WWW אמר בעזרה בתחביר C#:
אתה בטח צוחק עלי?
אבל מכיון שכבר הזכרת את שמי וכדי להציל אותך מחטא הזכרת שמי לשווא, כתבתי תוכנת נסיון, ונראה שהתחביר שהשתמשת אמור לעבוד.
עוד לא הסתדרת?
הנה תוכנת הנסיון:using System; namespace CastTest { interface IMyInterface { } class MyInterface : IMyInterface { public int I = 1; } class C { public IMyInterface mi = new MyInterface(); } class Program { static void Main(string[] args) { C c = new C(); // Console.WriteLine((c.mi).I); Error CS1061 'IMyInterface' does not contain a definition for 'I' Console.WriteLine(((MyInterface)c.mi).I); // עובד } } } -
@WWW אמר בעזרה בתחביר C#:
ואז אני יכול להשתמש בערך:
user.ClientIdדרך אגב, כדי להשתמש בערך
user.ClientId
לכאורה אין צורך ב-cast. כנראה אתה משתמש במאפיינים נוספים שלUserDefinition
שלא הוגדרו ב-IUserDefinition
-
-
@yossiz אמר בעזרה בתחביר C#:
@WWW אמר בעזרה בתחביר C#:
ואז אני יכול להשתמש בערך:
user.ClientIdדרך אגב, כדי להשתמש בערך
user.ClientId
לכאורה אין צורך ב-cast. כנראה אתה משתמש במאפיינים נוספים שלUserDefinition
שלא הוגדרו ב-IUserDefinition
כן כן, ה Id היה רק להפשטה.
-
@dovid אמר בעזרה בתחביר C#:
תגיד מה השגיאה שאתה מקבל (תוכל להעתיק למטה בerror list).
Error CS0182 An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type -
@dovid אמר בעזרה בתחביר C#:
אתה מעביר את הביטוי הזה לאטריביוט (כעת אני מבין למה ניסית לחסוך את המשתנה).
והשגיאה הזו אומרת שהערך שאטריביוט מקבל חייב להיות "קבוע" - ליטרל או כל ערך שידוע בזמן קומפילציה.
תודה רבה!
5/10