Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#指家长_C#_Oop_Parent Child - Fatal编程技术网

C#指家长

C#指家长,c#,oop,parent-child,C#,Oop,Parent Child,很抱歉我的愚蠢,但我正在寻找一种方法,从一个连接到服务的类构造一个对象,并且还包含另一个带有服务方法的类 我面临的问题是试图找到一种只需连接一次服务的方法。我拒绝使用全局变量之类的 我发现很难理解C语言中的对象概念,因为我的编程背景主要来自JavaScript 非常感谢您的帮助 namespace Tests.Classes { public class L { dynamic uri; dynamic service; dynam

很抱歉我的愚蠢,但我正在寻找一种方法,从一个连接到服务的类构造一个对象,并且还包含另一个带有服务方法的类

我面临的问题是试图找到一种只需连接一次服务的方法。我拒绝使用全局变量之类的

我发现很难理解C语言中的对象概念,因为我的编程背景主要来自JavaScript

非常感谢您的帮助

namespace Tests.Classes
{
    public class L
    {
        dynamic uri;
        dynamic service;
        dynamic credentials;
        dynamic proxy;

        public L L()
        {
            this.uri = new Uri("bladie bladie blah");
            this.credentials = new ClientCredentials();
            this.credentials.Windows.ClientCredential = (NetworkCredential)CredentialCache.DefaultCredentials;
            this.proxy = new OrganizationServiceProxy(this.uri, null, this.credentials, null);
            this.service = (IOrganizationService)this.proxy;
            return this;
        }

        public class OL
        {
            public OL OL(dynamic a)
            {
                this.service = parent.service; // <- doesn't compile
                return this;
            }
        }
    }
}
也许我的代码不够清晰。这将阻止分类狂热者:P

namespace Tests.Classes
{
    public class L
    {
        Uri uri;
        IOrganizationService service;
        ClientCredentials credentials;
        OrganizationServiceProxy proxy;

        public L L()
        {
            this.uri = new Uri("hBladie Bladie Blah");
            this.credentials = new ClientCredentials();
            this.credentials.Windows.ClientCredential = (NetworkCredential)CredentialCache.DefaultCredentials;
            this.proxy = new OrganizationServiceProxy(this.uri, null, this.credentials, null);
            this.service = (IOrganizationService)this.proxy;

            return this;
        }

        public class OL
        {
            Entity entity = new Entity();
            IOrganizationService service = null;

            public OL OL(dynamic a)
            {
                if (a is Entity)
                {
                    this.entity = a;
                }
                if (a is string)
                {
                    this.entity = new Entity(a);
                }

                return this;
            }

            public OL attr(dynamic key, dynamic value)
            {
                this.entity[key] = value;
                return this;
            }

            public Boolean save()
            {
                this.parent.service.create(this.entity); // parent does not exist
            }
        }
    }
}
我讨厌凌乱的编程,我喜欢jQuery风格

以下是代码的使用方法:

new L().OL("haha").attr("Hello", "world").save();


做这样的事情:

public class OL
{
    dynamic olService = nnull;
    public OL OL(dynamic a)
    {
          this.olService = parent.service; // <- doesn't compile
          //return this; //remove this !!!!
     }
}
公共类OL
{
动态olService=nnull;
公共OL(动态a)
{

this.olService=parent.service;//将在Java中工作。在C#中,需要将L传递给OL的构造函数:

public OL(dynamic O, L parent)
{
   this.service = parent.service;
}
顺便说一下,您的构造函数不会编译,您有两个
OL
s和一个
return


顺便问一下,2,为什么要使用这么多动态功能?

如果要为类的所有实例提供一个
服务,请将其声明为
静态
。例如:

static IOrganizationService service;

然后在嵌套类中,您可以通过
L.service

引用它。首先,将
dynamic
替换为
var
。您不需要动态。不清楚您想要的
parent
是什么,也不清楚为什么所有变量都使用
dynamic
声明……并没有回答我的问题,但好吧,您需要一个介绍人吗y文本到C#,这在这里是一个广泛超出范围的问题。你说不清楚是什么意思?它应该是指L.serviceWas纯示例..动态,因为它们总是工作的:D(我来自JavaScript背景,所有东西都是动态的)“因为它们总是工作的”。不,它们总是编译。如果输入错误或其他错误,它们将无法工作。:)当它是静态的时,我如何更改它的值?@Chris,我在回答中提到,您可以通过
L.service
引用它。例如:
L.service=…;
public OL(dynamic O, L parent)
{
   this.service = parent.service;
}
static IOrganizationService service;