|
I am in a course in C# and have gotten a task to refactor my earlier task so it uses interfaces and abstract classes instead. In this task i need to make the interface with specific properties and methods, one of these properties should only have a getter but not a setter, this is a string object to hold the ID of the animal added.
My question is, how do i set this property? I can't give it a value in the constructor, and i cant work with it in the interface, and i cant do something with it in the abstract class since it's not static.
Cake
|
|
|
|
|
Under normal conditions, you would use either a private backing field:
private string _MyProperty = "hello";
public string MyProperty
{
get { return _MyProperty; }
} Or a private setter:
public string MyProperty { get; private set; } In either case you can set the value in the class constructor, or any other method of the class - but not from the outside world.
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
The thing is that there aren't any private setters in the description we got in the task.
It looks like this:
https://www.dropbox.com/s/n2xqlgthxd78s8g/interface.png?dl=0[^]
So the only way is to create another, private, property to create an id, and then get that from the public get? Seems very redundant. Plus, there is no mention of such a field in the info either.
|
|
|
|
|
Interfaces don't have private members, which is why there's no private setter on the property.
You can still add one in the implementation, or use a backing field for the property:
interface IHaveAReadOnlyProperty
{
int MeaningOfLife { get; }
}
public class Implementation1 : IHaveAReadOnlyProperty
{
public int MeaningOfLife { get; private set; }
public Implementation1()
{
MeaningOfLife = 42;
}
}
public class Implementation2 : IHaveAReadOnlyProperty
{
private readonly int _meaningOfLife;
public int MeaningOfLife
{
get { return _meaningOfLife; }
}
public Implementation2()
{
_meaningOfLife = 42;
}
}
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
Thanks for the explanation. Had one question on this but Bill's reply answered that.
|
|
|
|
|
Richard Deeming shows you what to do in his response here; I'll add that you might want to think of a Class inheriting from an Interface as entering into a contract that promises to implement members in the Class whose Types, names, and position (in parameter lists) exactly match the specification in the Interface.
So, your inheriting IAnimal promises to implement a Property of Type 'string named 'ID with a 'get accessor: that does not prevent you from adding a 'setter, and does not require you to use any type of access-modifier (public, private, etc.).
«I'm asked why doesn't C# implement feature X all the time. The answer's always the same: because no one ever designed, specified, implemented, tested, documented, shipped that feature. All six of those things are necessary to make a feature happen. They all cost huge amounts of time, effort and money.» Eric Lippert, Microsoft, 2009
|
|
|
|
|
i want code for read data from hyperterminal
|
|
|
|
|
Member 11352751 wrote: i want code for read data from hyperterminal
And I want a beer!
Please do read this: How-to-get-an-answer-to-your-question[^]
Cheers!
"I had the right to remain silent, but I didn't have the ability!"
Ron White, Comedian
|
|
|
|
|
Um...why?
Hyperterminal is an application, which communicates with a COM port.
If you have code which wants to read or write data from a port, then just use the SerialPort class[^] and read / write the data directly in your application.
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
How to create a program like defrag.exe, I want to create a disk defragmentor in c# any idea how to do it?
|
|
|
|
|
The same way as in any other language, using the defragmentation API[^]. There's a C# wrapper here[^].
Algorithms to do it efficiently aren't trivial either.
|
|
|
|
|
Hi,
I want to ask what is the best way to update the sql server database schema on the customers when they update the windows application.
I want when the customer update the application auto update the database schema automatically.
|
|
|
|
|
There may be tools for this but old school is to:
Create a method within you app update process that reads a script from somewhere (your update source or the database you wish to update.
Execute the script on the database from your client application.
We used to then close and reinitialise the connection.
Caveat you need to test the script 3 ways from hell to insure a clean update.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
Just to add to what Mycroft said: Back the damn thing up first!
The last thing you want is to lose customer data, so either automatically back it up (See here: Backing up an SQL Database in C#[^]) or suggest that they do!
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
Can anyone please help me to Understand ASp.net MVC Web Api
it might be by examples or websites that i can go through
I am new on it
Thanks In Advance
Tp
|
|
|
|
|
|
I Connected My c# Code with google drive using google.apis.data assembly. But I am not able to get the newly created file from google drive. I am Doing Like this way.
var service = new DriveService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "GDrive Connector",
});.
modified 22-Jan-15 1:03am.
|
|
|
|
|
problem solved
modified 24-Jan-15 18:30pm.
|
|
|
|
|
where you set @Name_Directo parameter value?
and also in your MappingDB2OO method you need "Id" column but I can't see in your query a column name with "Id"
|
|
|
|
|
@Name_Director is to get the value of the textbox.
But i think is impossible because a need construtor director.
I don't know if you are understanding my problem.
About mapping, is wrong ..but the problem isn't there.
|
|
|
|
|
using the following code you write.
using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;
using System.Data.SqlClient;
DataTable dataset = new DataTable();
dataset = Ds.DataTab("select M.*,P.Name,P.Id From Pay P Mem M where M.Id = " + Ds.TrueInt(Member.Text));
dataset = Ds.DataTab("select * from Pay where Member =" + Ds.TrueInt(Member.Text + ""));
dataset = Ds.DataTab(string.Format("select (Name+' ' + FName) as fullName from Mem where Id = '{0}'", Convert.ToInt32(Member.Text)));
NameFName.Text = dataset.Rows[0].Field<string>("fullName");
With this command you can use the SQL table at your disposal form (C #)
|
|
|
|
|
Hi,
I have C# WinForm application.
I want to export my existing registry key entries as .reg file and include in within my WinForm then make my WinForm to create the registry entries wherever I need without having to extract the .reg on the client PC.
Any suggestion please? How can I achieve this?
Technology News @ www.JassimRahma.com
|
|
|
|
|
Don't. If you need to create registry entries, use the registry functionality build into .NET already. This will require certain permissions for your application, but you would need the same permissions when attempting to apply the .reg file anyway.
|
|
|
|
|
my registry entries are in LocalMachine and Windows won't allow me to write there! I tried it before... It won't even prompt to enter the administrator password!
Technology News @ www.JassimRahma.com
|
|
|
|
|
And what do you think that a .reg file will give you?
|
|
|
|