没做过,C#的代码,从哪开始看啊,找不到头,看起来好乱

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Collections.Specialized;

using System.Runtime.InteropServices;

using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Server;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.SOESupport;

using ESRI.ArcGIS.DataSourcesRaster; 

//TODO: sign the project (project properties > signing tab > sign the assembly)
//      this is strongly suggested if the dll will be registered using regasm.exe <your>.dll /codebase


namespace NetEditFeaturesRESTSOE
{
    [ComVisible(true)]
    [Guid("6d79a67b-27d2-4a7f-85a3-6bf6fab061df")]
    [ClassInterface(ClassInterfaceType.None)]
    [ServerObjectExtension("MapServer",
        AllCapabilities = "",
        DefaultCapabilities = "",
        Description = ".Net Edit features SOE - allows feature validation and editing.",
        DisplayName = ".Net Edit Features REST SOE",
        Properties = "layerId=0",
        SupportsREST = true,
        SupportsSOAP = false)]
    public class NetEditFeaturesRESTSOE : IServerObjectExtension, IObjectConstruct, IRESTRequestHandler
    {
        private string soe_name;

        private IPropertySet configProps;
        private IServerObjectHelper serverObjectHelper;
        private ServerLogger logger;
        private IRESTRequestHandler reqHandler;

        private IMapServerInfo mapServerInfo = null;
        private IMapServerDataAccess mapServerDataAccess = null;
        private IMapLayerInfos layerInfos = null;
        private IMapLayerInfo editLayerInfo = null;
        private int layerId = -1;
        private IFeatureClass fc = null;

        public NetEditFeaturesRESTSOE()
        {
            soe_name = this.GetType().Name;
            logger = new ServerLogger();
            reqHandler = new SoeRestImpl(soe_name, CreateRestSchema()) as IRESTRequestHandler;
        }

        #region IServerObjectExtension Members

        public void Init(IServerObjectHelper pSOH)
        {
            serverObjectHelper = pSOH;

            mapServerDataAccess = (IMapServerDataAccess)pSOH.ServerObject;
            IMapServer3 ms = (IMapServer3)pSOH.ServerObject;
            this.mapServerInfo = ms.GetServerInfo(ms.DefaultMapName);
            this.layerInfos = mapServerInfo.MapLayerInfos;

            if (layerId < 0)
                layerId = 0;
        }

        public void Shutdown()
        {
        }

        #endregion

        #region IObjectConstruct Members

        public void Construct(IPropertySet props)
        {
            configProps = props;
            string lid = (string)props.GetProperty("layerId");
            this.layerId = Convert.ToInt32(lid);

            this.fc = (IFeatureClass) this.mapServerDataAccess.GetDataSource(this.mapServerInfo.Name, this.layerId);
            this.editLayerInfo = this.layerInfos.get_Element(this.layerId);
        }

        #endregion

        #region IRESTRequestHandler Members

        public string GetSchema()
        {
            return reqHandler.GetSchema();
        }

        public byte[] HandleRESTRequest(string Capabilities, string resourceName, string operationName, string operationInput, string outputFormat, string requestProperties, out string responseProperties)
        {
            return reqHandler.HandleRESTRequest(Capabilities, resourceName, operationName, operationInput, outputFormat, requestProperties, out responseProperties);
        }

        #endregion


放不下了,网址在这
soe](https://github.com/Esri/arcobjects-sdk-community-samples/blob/master/Net/Server/ServerEditFeaturesRESTSOE/CSharp/EditFeaturesRESTSOE/NetEditFeaturesRESTSOE.cs "")

从上往下看呗。
public class NetEditFeaturesRESTSOE : IServerObjectExtension, IObjectConstruct, IRESTRequestHandler
NetEditFeaturesRESTSOE是类名,:后面的是接口。
下面的是各个方法,
public NetEditFeaturesRESTSOE()
{
soe_name = this.GetType().Name;
logger = new ServerLogger();
reqHandler = new SoeRestImpl(soe_name, CreateRestSchema()) as IRESTRequestHandler;
}
是构造方法,最先执行,接着就是其他方法。调用接口里面方法名时执行,或者直接调用这个也执行。
接口里面的方法全部要实现,所以有
public void Shutdown()
{
}

namespace NetEditFeaturesRESTSOE之上的为命名空间和引用的命名空间
public class NetEditFeaturesRESTSOE 为类名
下面就是函数或方法

类名:NetEditFeaturesRESTSOE    实例化就可以调用这个类里面的方法了,

这是实例化是就会调用的构造方法无参数
        public NetEditFeaturesRESTSOE()
    {
        soe_name = this.GetType().Name;
        logger = new ServerLogger();
        reqHandler = new SoeRestImpl(soe_name, CreateRestSchema()) as IRESTRequestHandler;
    }

            下面的都是内部方法了。


                #region IServerObjectExtension Members 
                ****
                #endregion

                #region IObjectConstruct Members
                ****
                #endregion

                没具体意思就是把其实几个方法归类说明    #region开始   #endregion结尾

            调用方法:
            NetEditFeaturesRESTSOE nfr = new NetEditFeaturesRESTSOE();
            nfr.Init(参数);
            nfr.Construct(参数);
            .....

http://www.pc6.com/softview/SoftView_74439.html 发本教程自学。。。